Gut, das ein Beitrag ist über Java und Lispeln Scherz, hat es keinen Sinn, und ich denke, dass mit jeder Sprache, die Sie seltsame Code wie folgt schreiben:
Ich persönlich mag diese mit javascript:
2016-07-11 15:08:33 ☆ |[email protected]| Antonios-MBP in ~
○ → node
> Array(16).join("lol" - 2) + " Batman!";
'NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN Batman!'
>
in den Code gehen, aber ein wenig formatiert:
((lambda ([])
((lambda (|| |()| |(| |)|)
(+ || |(| 1 |)| |()| |(| |(| |(|))
[] [] [] []))
0)
dafür brauchen wir zwei Dinge über Common Lisp der sintaxis der Lambda-Funktion und einer LITT wissen le Bit über Symbole sintaxis und Variablen:
erste Trick: [] ist ein Variablenname
CL-USER> (defparameter [] 2)
[]
CL-USER> (+ [] [])
4
zweiten Trick: Sie einen beliebigen Namen innerhalb |symbol-name|
auf ein Symbol setzen können so (|| |()| |(| |)|)
so sind dies nur der Eintrag Variablen für das zweite Lambda schließlich haben diese lambdas den Körper und der Ausfürung Parameter für das erste Lambda-0 ist und für das intern Lambda vier []
so kann diese rewriten werden als:
((lambda (a)
((lambda (x y z k)
(+ x z 1 k y z z z))
a a a a))
0)
und ist schließlich leicht zu erraten, dass dies eine
Hinweis sein: in CL '|) |' das Symbol * ist * der Name ')' (eine einzelne Zeichenkette eine enge Klammer) –
enthalten, |) | durch irgendein anderes Symbol ersetzt werden, sagen wir sym? – rnso
Ja, insbesondere wenn 'sym' frisch ist (vielleicht [gensym] (http://clhs.lisp.se/Body/f_gensym.htm) ed) –