日曜プログラミング

PHP好き集まれ〜!!

Lisp始めたので自分のためにメモ

まだまだ勉強し始めたばかりですが
Common Lispで勉強したことを適当にメモして書いていこうと思います
基本的にこのブログはメモ代わりですので
LispだけでなくPHPのメモなんかも定期的に追加していく予定です。


CommonLispでは高階関数つまり、関数を引数とする関数を使うときに
#'symbol-nameという表記をよく使う。
これは(function symbol-name)の略で、
functionという関数定義はsymbol-nameに格納されている関数定義を呼び出してくれるらしい。

例:'(1 2 3)の各要素を足して結果を返す

正解からいうと

(apply #'+ '(1 2 3)) ; =>6

この時なんで#'をつける必要があったか考えます
例えば

(apply (+) '(1 2 3))

(+)では関数+が評価され0が返される。
もちろん(+)のところを+と書いてもダメです。
これでは変数+を呼び出してしまいます。もちろん定義されていません。
そこで関数そのものを呼び出すことが必要になるということで#'を使うということですね。
Lispでは関数も文字列や数値と同じように扱えるということでこのような表記があるのかなと思います。
以上。