ラベル リスト遊び の投稿を表示しています。 すべての投稿を表示
ラベル リスト遊び の投稿を表示しています。 すべての投稿を表示

2008年12月30日火曜日

【L遊び】8 セル遊び

気を取り直して、最終章。

  • CLのrplaca,rplacdはsetcar,setcdrのようだ。
  • そっか、nconcとかのnはnuke(核(兵器))のことなんだ。
  • う、するとdelqのqは何?
  • CLと大きな違いは感じない。

お、リスト遊びが終わった。またしばらくしたら再帰したい。
さて、Emacs方面、次は何をやろうかなぁ。

2008年12月29日月曜日

【L遊び】7 繰り返し


  • 代入と関連付けてletを導入するのは違和感があるなぁ。
  • むぅ。sumの例を繰り返しで書くなら、whileじゃなくてdo系を使うべき。elispにdoが無いのかなぁ。
  • だめだ、このwhileとsetqの群れが気持悪くて耐えられない。「7.4 catchとthrow」まで飛ぶ。
  • この章、精神衛生上よろしくない。

えっと、再帰には再帰が適した話題があり、whileもしかり、doもしかり、loopもしかりだと思う。
効率の問題で再帰を繰り返しで書き直すというのはもちろんあるのだが、それは末尾再帰だとか他のことをも含めてやるべきだろう。

【L遊び】6 より柔らかに


  • 補助関数導入のメリットの一つに、補助関数にてデータ構造を隠蔽することによって、主関数への変更無しにデータ構造の変更に対応できる、というような記述がある。これ、そんなに適用できるケースが多いかなぁ。主関数は制御のみで、データの取扱い(アルゴリズム含む)が補助関数にいっちゃってるなら、そうなんだけど。ああ、ただあるデータをリストで実装するかベクタで実装するかというような、探求的にやっていく場合はこの隠蔽は有効だな。OOの隠蔽と一緒かな。
  • この章を読み終わって、何か違和感があるなぁ、と思ったら、関数の抽象化の話題なのにlambdaがでてこないからだ。なっとく。

こつこつ。

2008年12月28日日曜日

【L遊び】5 より深く


  • 入れ子になったリストの再帰をする関数たち。
  • この定石というの、今おもうとHtDPのレシピのはしりだったんだなぁ。
  • あと、The Little Schemerの雰囲気を感じるなぁ。
  • 再帰パズルは楽しい。

なかぱっぱ? CLとの有意な差は感じない。

しかし、一章以上は複数投稿にばらす、というのをルールにしているのだけれど、章の規模が小さい本だとどうも散弾銃的になってしまうのがいやな感じ。無意味に投稿数が増えていく。RSSを購読されている方がいるとしたら、迷惑なんじゃないだろうか。ちょっと考えていきたい。
こつこつ。

【L遊び】4 再帰


  • 自然数やリストの再帰の基本例題

CLとの違いは感じない。
はじめちょろちょろ。

【L遊び】3 関数遊び


  • defun、cond、eq、変数、=、/=、<、<=、>、>=、and、orなど。
  • だいたいCLといっしょ。しかし変数って難しい概念なんだよなぁ、、、

こつこつ。

【L遊び】2 アトムとセル


  • おお! elispではシンボルで大文字と小文字を区別するんだ。
  • シンボルは、変数と関数とで別空間。ここはCLといっしょ。
  • をを! なんというか、tとnilなのであって、TとNILは単なるシンボルなんだ。
  • nilは空リストであり()であり'()であり。CLといっしょ。

  • あとは、セル、cons、car、cdr、リスト、アトム、リストのリスト、ドット対、評価、quoteなど。
  • 特殊形式(specia form)を、特殊関数とか関数などと呼ぶのはあまりよくないなぁ。。。

こつこつ。

【L遊び】1 落書き帳

PAIPでSchemeのコンパイラに入るにはちょっと頭が疲れている。だけどもうちょっと勉強したい、という気分。そこで三位一体のひとつElispの勉強をこの機会に始めようと思う。本は山本和彦さんの「リスト遊び」。昔一度勉強したことがあるので、二度目になるかなぁ。(山本さん自身は最近はHaskellに取り組まれている)

  • 第一章 落書き帳
  • バッファ、ミニバッファ、バッファローカル変数、グローバル変数、スクラッチバッファ、Lisp Interaction mode、各種評価方法など。

山本さんの語り口は、なんとゆうか慈愛にあふれているなぁ。