Lispをちょっと触ってみる
移転しました。
GP(遺伝的プログラミング)に興味がある。昔GPではよくLispが使われたという事で関数型言語になれるためにLispをさわってみる。
今回はmac leopoard 10.5.2で行う
インストール
参考URLそのまま
http://ujihisa.nowa.jp/entry/9df2c5a6ea
ただよくわからないが、1回目は失敗。同じコマンドをもう1度繰り返したら、インストール成功した。
$ sudo port clean clisp ---> Cleaning clisp $ sudo port install clisp ---> Fetching clisp ---> Verifying checksum(s) for clisp ---> Extracting clisp ---> Configuring clisp ---> Building clisp with target all ---> Staging clisp into destroot ---> Installing clisp 2.43_0+darwin_9 ---> Activating clisp 2.43_0+darwin_9 ---> Cleaning clisp
さわってみる
参考URL
http://www.haun.org/kent/lisp1/1.html
起動
$ clisp Break 2 [3]>
足し算
以下式は「数値の345と654を加算する」という意味
Break 2 [3]> (+ 345 654) 999
変数設定
setq で変数設定できる。以下は変数hogeに345を設定。
Break 2 [3]> (setq hoge 345) 345 Break 2 [3]> hoge 345
if文
if 真偽 真の結果 偽の結果 という構文が基本らしい。
nil は偽になる、らしい。ということはnil以外は全て真?
Break 3 [4]> (if nil 11 24) 24 Break 3 [4]> (if 1 11 24) 11
関数定義
以下は絶対値を求める関数。
condを使用してまず (>= x 0) x を実行し、偽、の場合に t (- 0 x)) を実行。
ちなみにtは真(true)の意味。-1をかけてるだけだね、ここでは。
Break 3 [4]> (defun abc (x) (cond ((>= x 0) x) (t (- 0 x)))) ABC Break 5 [6]> (abc -8) 8