作者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