2008年11月16日 星期日

LISP 初體驗

原本以為 LISP 只是一個普通的 functional language,所以之前都沒去接觸。但是在看完<<駭客與畫家>>之後,開始對 LISP 產生興趣。

書裡面提到 LISP 擁有許多最近新語言開始導入的 feature,而 LISP 也擁有一些其他語言沒有的功能。像我主要是被 LISP 的 macro 吸引(比 C 的 macro 強大多了。可以先把他想像成是 return 程式碼的 function,而且是在 compile 前先展開。),所以開始看 <<Practical Common Lisp>> 一書。目前為止,大家比較熟悉的語言中,我只有在 Perl 6 裡面看到 (http://en.wikipedia.org/wiki/Perl_6#Macros)。

大部分的人對 LISP 的印象就是一堆噁心的括號,寫個加法都要用 (+ 1 2) 這種前置式來敘述,實在是不符合人類的直覺。而 LISP 整個程式碼都是這樣 -- 由一堆 "list" 所組成。(* (+ 1 2) (+ 3 4)) 有一個 list,第一個元素是 * 這個 "function",第二、三個是另外兩個 list。類似這樣的語法,在定義 function、if、while 等等都一樣。

但這之前隱含了一件事實:LISP 本身的程式碼,就是一個資料結構! 所以 LISP 的 macro 做的事情就是生出程式碼的資料結構,我覺得這就比 Perl 6 的 macro 那種 template 的方式優雅多了。不過,這個優點是建立在令人卻步的括號海上的...

接下來,po 幾個我的 LISP 練習 XD

7 則留言:

Unknown 提到...

請問ptt留下的不良對罵紀錄能否刪除?

Unknown 提到...

可以幫我刪除嗎?我不是有意的

카지노사이트위키 提到...

I learned a lot in this blog. Thank you very much for sharing good content.

온라인카지노 提到...

Useful blog info. Keep blogging! I wanted to thank you for this excellent read!

카지노사이트탑 提到...

I will support you. Such a very useful article. A must read post

카지노사이트킹 提到...

It’s really a nice and useful piece of information that you provide.

Williamsteve 提到...

I appreciate your effort for publishing such an amazing article. It is very effective and interesting. Thanks for sharing. reckless driving in virginia