Lisp的特性 (评论发不出,只好写一篇新的)

Lisp的特性 (评论发不出,只好写一篇新的)
2011年02月18日
  本来是给 Lisp的给力特性 这篇文章的评论,奈何csdn的blog上无法提交,只好新发一篇:
  目前我不知道到底与C++的宏(其实也是一样的编译期展开),还有比普通函数的优势在哪。(原谅我才学Lisp没有几天)
  ====
  Lisp 的Macro 与 C++中 Macro 的区别: (原谅我N多年没用过C++) Lisp的语言本身就是 S表达式, Lisp 的Macro直接操作列表,可以应用全部的Lisp语法工具来将输入列表转换成目标的程序列表。
  相比较来说 C++的Macro更多只是替换。表达能力上不可同日而语。
  Lisp的Macro 可以实现惰性计算,可以实现自己的语法结构, 传递给Macro的参数可以自己控制其求值次数(0次或多次) ,这样就可以自己实现 if , loop 等语法结构。
  ====
  Lisp 与 Haskell 并非同源, Haskell 来自 Miranda , 借鉴了 ML 中的类型推导。 Python的 list comperhension 是来自 haskell, 在 CL中有一个类似的 incf-cl 库可以实现 list comperhension 。 这就是Lisp的强大之处, 它根本就没语法,写出来的就是代码树, Macro就是一个代码生成器。 所以有什么新的语言特性,Lisp都能快速的吸收进来。
  实际上, 后来很重要的 循环、OO、异常处理, 在Lisp中都是通过 macro 实现的。
  因此,神马都是浮云, 不服Lisp的,可以自己写个 C++, Java 的预处理扩展, 自己实现各种特性, 只是Lisp将这种能力内置了,缩短了进化语言与普通开发之间的距离。人人都能变成语言的改进者。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值