2008年7月18日金曜日

第12講 ガールフレンドも買い物も関数引数でOK


  • 「金太郎飴がどこで切っても同じだというので、Lispの構造的一様性の比喩でしょうと言ってきた御人がおる。」
  • 「電気信号の処理のように、データの処理もフィルターをかける操作と考えると非常に明快なことがある。」
  • 「Common Lispはラムダ式を関数実体につけた"名前"という見方をする。functionまたは#'は名前から本当の関数実体を引き出す特殊形式なのじゃ。だから、#'consはconsというシンボルがもつ関数実体を返す。"名前"と"関数実体"の差に拘わるとこのへんはこういうふうに厳密に書かざるを得まい。」
  • 「functionでくくられたラムダ式は、その時点で見えるメモ用紙を自分と一緒に持ち歩くのだ。つまり、Common Lispではラムダ式という"名前"とそのときのメモ用紙の状態から、そのつど新しい関数実体を作り出す。」

2008年7月13日日曜日

第11講 シンボルを人前に曝す


  • 「Lispの名前は単に構文上の標識ではなく、リストのセルのようにデータが置かれている空間のどこかに実在する1つのデータ実体である。」
  • 「ウム、確かに名前という名前は紛らわしいから、これから名前と呼ばずにシンボルと呼ぼう。」
  • 「そういう細かいことはこだわらんのがLispなのじゃ。」
  • 「Lispではシンボルは数と同等、いやそれ以上に重要な概念だから、シンボルの表記と内部に作られるシンボルの実体をはっきりと分けて考える。」
  • 「実は、変数名と値の対応というのはいろいろ難しい問題をハラんでおる。Lispの歴史の中でも最も波瀾万丈の問題なのじゃ。」
  • 「とりあえず、ズルズルと目をつぶって、いい加減にやってきちゃっというのがLispの歴史の本質だし、Lisp教師の本質でもある。」
  • 属性リストで出てくる交代リストとは、キーワードリストのことなのかな?
  • 「ラムダ式の一番重要なポイントは、関数の概念から、名前を省いたことじゃ。」

2008年7月11日金曜日

第10講 変態プログラム

こつこつ。

  • 「生物個体あるいはその一部の外形のかなり不可逆的な内因的変化」
  • 「変態プログラムは、実際に評価される前にプログラム自身が変態する」
  • defsubstはCLにはなさそう。お、substはある。
  • 「B子:評価したくない引数が必要なときにdefsubstを使うというのが本音なのかしら。K:ウム、ほぼ正しい、それは。」ということは、lazy evaluationが十分ならばマクロは不要ってことか。
  • お、マクロも出てきた。
  • この本の時点ではCLにgensymはなかったのかも。

2008年7月10日木曜日

第9講 デートの前にリストの切り貼り

こつこつ。

  • rplaca, rplacd。初めて知った。ANSI CLにも存在する。
  • なるほど、これを使うと、リストを紐解かなくてもリストの切り貼りができるんだな。

ざっと見だけ。もう一度読むときに、いろいろ試してみることにする。

2008年7月6日日曜日

第8講 Lispの御本尊のお出まし


  • 「いつか言ったように名前は、それ自身で実体を伴ったデータである。
  • 「Lispの仕組みを理解するには、変数と値の結合もS式の形に見えることが重要なので、いまでも教育用にはこの辞書が使われる。」
  • 「(略)どうも変だな。Lispのプログラムを評価するのに、辞書であるalistが出て来た。そして、そのalistから情報を引き出すのに、またassocとかいったLispの式を評価しないといけない。assocの中にもまた変数が出てくる。ウワ、一体どうなるんだ。話がこんがらがってきたぞ。」

第7講 Go,go,go... do,do,do... loop,loop,loop...。やっぱりOは丸い


  • 「太古の昔から人間は手順を伝達するのに再帰法なんか使っていなかったのです。あくまで"繰り返し"が基本でした」
  • 「自然言語で書いたものをいつでもそのままS式に投影しただけでLispのプログラムになるのでは、Lispのシステムが大きくなりすぎて爆発してしまう」
  • 「BasicやFortranだったら、それこそ文法上の革命あるいは言語そのものの改変みたいなことが、Lispではいともあっさり起こり、それでもそれがLispであることを誰もが疑わないような強烈なアイデンティティがLispの各に潜んでおる。」
  • 「繰り返しなら繰り返しと最初から形を見ただけでわかるような書き方にしようというのが、いわゆる構造化プログラミングだ。」

2008年7月5日土曜日

第6講 またも再帰するから再帰なのだ


  • 「大きな仕事を分解して、1つ1つの昨日単位に関数を対応させていくようなプログラミングでは、そもそもの基本的極意なのじゃ。再帰法は、たまたま下請けが自分と同じ関数だったというだけのことで、それ以上のものでもないしそれ以下のものでもない。」
  • 「現実のプログラムを書かない理論屋は再帰法のほうを好むし、本当に毎日商売のためにプログラムを書いている人間はあそもそも会場の計算なんかに興味をもたない。」