首页 > 下面那个 Lisp 语句中的 "|" 应该怎么去理解?

下面那个 Lisp 语句中的 "|" 应该怎么去理解?

代码:

((lambda([])((lambda(|| |()| |(| |)|)(+ || |(| 1 |)| |()| |(| |(| |(|)) [] [] [] [])) 0)

代码来源见文章:http://matthias.benkard.de/journal/110 结尾,或者说说如何理解这段代码?


很有趣的问题啊

先贴一个 http://stackoverflow.com/questions/9509832/whats-stands-for

根据里面的说法:|...|就是把两个管道符之间的字符作为一个 symbol name 来用;也就是说,不管里面有没有保留字、有没有空格或者括号,实际上都只是当作一个单独的普通的 identifier。

那么原始代码中的 |||(||)||()|其实只是四个 symbol (相当于四个变量名)。

为了看着省事,我们把它们四个分别替换为 pppfppbppfbp吧……

代码于是变成了

((lambda([])((lambda(pp pfbp pfp pbp)(+ pp pfp 1 pbp pfbp pfp pfp pfp)) [] [] [] [])) 0)

这回就很容易看懂了吧……

【热门文章】
【热门文章】