您好,匿名用户

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

0 投票

代码:

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

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

用户头像 提问 2016年 6月8日 @ Zeus 下士 (833 威望)
分享到:

1个回答

0 投票
 
最佳答案

很有趣的问题啊

先贴一个 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)

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

用户头像 回复 2016年 6月8日 @ Miss Fortune 上士 (2,178 威望)
提一个问题:

相关问题

0 投票
1 回复 163 阅读
0 投票
0 回复 21 阅读
0 投票
1 回复 43 阅读
用户头像 提问 2016年 1月27日 @ Heimerdinger 中士 (1,296 威望)
0 投票
1 回复 4,391 阅读
用户头像 提问 2013年 10月25日 @ Maokai 中士 (1,427 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

IT技术交流群 - 随意问
欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...