2008-08-01から1ヶ月間の記事一覧

実践Common lispを読み始めた-第12章 リスト処理:やつらがLISPと呼ぶ理由(2)

絵を書きたい はてなでは簡単に絵を描く方法はないのかな。手書きはうまくかけないし、最近Macに変えたのどんなドローイングソフトを使うのがよいのかよくわからないし、書いたものをpngファイルとかに保存して貼るのも面倒。 点対(ドットペア) コンスセル…

実践Common lispを読み始めた-第12章 リスト処理:やつらがLISPと呼ぶ理由(1)

やっとコンスセルによるリスト構造の絵が登場。立ち読みした本を含めて、Lispというと必ずと言っていいほどコンスセルの絵が出てくるのだが、この本は出てくるのが遅い。他のLisp本と比べるとマクロが先に出てきたりユニークだと思う。さて本題。 Lispにおい…

実践Common lispを読み始めた-第11章 コレクション

SLIMEのキーバインドを少し勉強して少し快適に。Lispっていうと何はともかくリストで勝負っていう印象なんだけれど、どっこいコレクションはあるよという話。 Vector 固定長または可変長のコレクション。前者はJavaの配列みたいなもので、後者はPerl,Rubyの…

SLIMEのキーバインド

たまにはマニュアルも読んでおこうと思う。 SLIMEの使い方を今まで調べたことがなかったので、ここにまとめる。まずは、本家のマニュアル"Top (SLIME User Manual, version 2.22)"を表にしておこう。 REPL キー 機能 説明 RET slime-repl-return 入力した内…

実践Common lispを読み始めた-第10章 数、文字、そして文字列

ファーストクラスのデータ型 Lispの関数はファーストクラスデータ型。でファーストクラスってどういう意味だろうか?関数自体を関数の引数とか戻り値に使えるということかな。でもそれだったらC/C++だって関数ポインタがあるじゃん。本当のところ何が満たせ…

実践Common lispを読み始めた-第9章 マクロ:ユニットテストフレームワーク

Unitテストを題材に、Lispで書いたらこんなに簡単になるよという話。 関数とマクロを使って、ボトムアップでフレームワークを作っていく。 (defun report-result (result form) (format t "~:[FAIL~;pass~] ... ~a~%" result form)) (defun test-+ () (repor…

実践Common lispを読み始めた-第8章 マクロ:自分で定義しよう

自分でマクロを書いてみるところに入ってきた。 マクロを正確に理解する最大の障壁は、おそらくマクロがあまりにうまく言語に統合されてしまっていることにある。 はい、そうだと思います。マクロを使っていても言語を拡張しているという印象がまるでない。 …

実践Common lispを読み始めた-第7章 マクロ:標準的な制御構文の構築

マクロの章に入ってきた。 言語仕様と標準ライブラリ ふつうは、言語を「言語と標準ライブラリ」と定義いて、標準ライブラリを(例えば継承なんかで)拡張していくことで言語として拡張していることにしているけど、そうじゃなくて言語仕様自体を拡張するこ…

実践Common lispを読み始めた-第6章 変数

リファレンス 専門書が充実している本屋に行ったらCommon LISP第2版が置いてあった。リファレンスとして一冊あると何かと便利だろうと思って、値段をみたら税込み8400円なり。 まだ自分には早いな。 レキシカル変数とダイナミック変数そして型付け おおざっ…

実践Common lispを読み始めた-第5章 関数

SLIME不調 今日はSLIMEの調子がおかしい。 Polling "/var/folders/VA/(中略)/-Tmp-/slime.41395" .. (Abort with `M-x slime-abort-connection'.)のままSLIMEが立ち上がらない。 再起動してもだめ。 何か情報でもないかなと思ってLispboxのページを見たら、a…

実践Common lispを読み始めた-第4章 シンタックスとセマンティクス(2)

関数呼び出し 関数ではリストの先頭以外の要素を順に評価してその結果を関数に渡す。この前置記法によって関数でだいたいのことはできるようになっている。 特殊オペレータ 関数だけだとif文はかけない。そういった関数で定義できない操作を特殊オペレータと…