Doge log

Abby CTO 雑賀 力王のオフィシャルサイトです

はじめよう Common Lisp

最近何をやってるかというと実はCommon Lispを勉強し始めた.
結局プログラムが好きな人は必ずLispを通るんだろうな.

なんでCommon Lispを始めたか

なんとなく...というのは嘘でLisperの人たちが「凄い」と言ってるのを検証してみたかっただけ.
Schemeじゃないのは On Lispに合わせただけです.

処理系のインスコ

まずは環境構築.
僕の環境はMacLeopardなのでWindowsの人は勝手にやってください.
とりあえずCommon Lispの処理系だと

あたりを使ってる人が多そう.

CLISP

macportsからインスコできるのでそこからインスコする.
理由はよくわからないんだけどCLISPの環境だとなぜかasdf-installがうまく動かなかった.
なのでsbclの方を入れる.

SBCL

SBCLmacportsにあるのだけどLeopardだとこけるっぽい.
なのでSBCLのサイトから落としてきてインスコする.
SBCLはreadline効かないのっぽいのでmacportsでrlwrapをインスコしておくといいかな.
rlwrap経由で起動するaliasもしておくと楽.
こちらはasdf-install問題なし.
元々sbclasdfとか標準装備なのでこっちの方が楽なんだろうな.

開発環境

処理系をインスコしたら開発環境.
多分LisperはEmacs使いが多いのだろうけどvimで.
とりあえず特別に何かしたかというと何もしてないな...
言語関係なく以下は入れておくといい.

あとは書きながらREPLで軽くテストしていく想定で以下の設定をしている.

function! s:Exec()
    if &ft == "lisp"
        exe "!rlwrap sbcl --noinform --load %"
    else
        exe "!" . &ft . " %"
    endif 
:endfunction
command Exec call <SID>Exec()
map <silent> <C-P> :call <SID>Exec()<CR>

今まではperl,pythonで使ってたいた手法なんだけど.
これを書いておくとvimで関数を書いたあとCtrl+Pでその関数をREPLでテストできる.
とりあえずしばらくはCommon Lispネタを書いていく.