作者beatitude (python fan)
站内PLT
标题Re: [新手发问]Lisp
时间Wed Jan 9 23:54:03 2013
※ 引述《AngelLeliel (羽泽佑二)》之铭言:
: 最近因为看了"骇客与画家"这本书对Lisp产生兴趣
: 因此找了相关的资料来看
: 一开始我对Lisp的印象是一个历史悠久的语言
: 并没有花太多心思在这上面
: 但是稍微深入了解以後 我发现Lisp真的是非常Powerful
: 就我个人的认知
: Lisp最强大的一个功能便是Macro
: 这让我不禁想问
: 这麽强大的工具为什麽鲜见於其他直译式语言之中?
: 是程式语言架构造成的吗?
: 如果想要在其他语言(像是Perl,Ruby)
: 当中引入这个功能会有什麽困难的地方?
: 据我所知Perl6会把Macros加进来的样子...
: 也许叙述的不是很有条理
: 还请各位先进加以指导
回一篇古老的文
在小弟的认知里,由於 Lisp code 本身是由 List 组成的树状结构,
所以 Lisp 巨集可以在编译期将 Lisp code 当作资料结构进行处理。
由於 Lisp 巨集设计是对使用者开放的,
所以原则上 user 可以创造出任意的语法控制结构 (if, def, defn, defmacro...etc)
可以说是想要什麽都做得出来
其它语言因为语法规则较为复杂,
所以巨集 (ex: C macro) 往往仅能把 code 作为纯文本处理,
如此一来要把一个可见的 code pattern 抽象化出来就比较困难,
我想这是 Paul Graham 声称 Lisp is power 的原因
如果有说的不对的地方还请各位指教,thanks!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 1.161.244.143