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

高階関数と再帰

理解したような気がしても次の瞬間には何が何だか分からなくなっている。 せっかく掴んだ脆く危うい理解も、砂のように指の間をすり抜けてこぼれてゆく。 掴みどころがない。 再帰と高階関数のコラボ。 凶悪極まりない。 発狂しそうだ。 再帰がスタックを食…

よーしパパ、関数に名前を付けずに再帰させちゃうぞぉ!(その6)

L mk-lengthがmk-lengthに渡されたってことは、さらに再帰させるために引数を使うことができるのかな? R そうさ。 mk-lengthを一回使えばlength1ができるよ。 ((lambda (mk-length) (mk-length mk-length)) (lambda (mk-length) (lambda (l) (cond ((null? …

よーしパパ、関数に名前を付けずに再帰させちゃうぞぉ!(その4)

length0_4で使われているlengthは、mk-lengthであっても一向に構わないそうだ。 ということで、今後はこれをlength0_4とする。 (define length0_4 ((lambda (mk-length) ; (*1) (mk-length mk-length)) (lambda (mk-length) ; (*2) (lambda (l) (cond ((null…

よーしパパ、関数に名前を付けずに再帰させちゃうぞぉ!(その5)

「mk-lengthを任意の関数に永遠に適用し続ける必要がないよ」的な素振りを見せつつ、このままじゃ何も状況は変わらなくね? length0_4の要領でlength1_4とlength2_4を書くと (define length1_4 ((lambda (mk-length) (mk-length (mk-length mk-length))) (la…

脳内変換

((lambda (f) (f f)) hoge) から (hoge hoge) へ、スムーズに脳内変換できない。 ((lambda (n) (+ n 1)) 5) から (+ 5 1) へはすぐ変換できるのに。 なかなか高階関数に慣れない。

よーしパパ、関数に名前を付けずに再帰させちゃうぞぉ!(その3)

続き。 length0_3とlength1_3とlength2_3に書き換えることで、結構コードも簡潔になった。 しかし、まだ「名前を付けずに再帰」という目標にはたどり着いてない。 なんとかせんとねー。 L 再帰ってどんなんよ? R mk-lengthを任意の関数へ無限に適用するみた…

卒業式

今日は大学の卒業式だった。 研究室の4年生も巣立って行った。 特に親しくしていた訳ではないけども、もういなくなると思うとやっぱ何か寂しいなァ。 いなくなる人がいれば、新しく来る人もいるわけで。もう新4年生が研究室に顔を出している。 情報系の学生…

よーしパパ、関数に名前を付けずに再帰させちゃうぞぉ!(その2)

続き。 length0_2、length1_2、length2_2には依然として「あるパターンの繰り返し」が見える。 よし、これを取り除いていこうじゃないか、と。

よーしパパ、関数に名前を付けずに再帰させちゃうぞぉ!(その1)

前回は、「defineできない関数が存在するみたいだねー。アハハ」って感じで終わったけど、 defineって何だろう? 再帰的な定義って何だろう? って話題は続いていく。 これ以降、defineせずにリストの長さを求める再帰関数を作る過程を述べている模様。

不安

新しい技術には目もくれず、なぜかScheme。 古い技術は大切だ、とかそういうのじゃなく、ただ楽しいから勉強している。 そんな自分は使えないプログラマなんだろうなぁ。 PHPの勉強も途中で投げ出したし。 こういうことはモラトリアムな学生時代にやっとくべ…

ListとLinkedList

System.Collections.Generic.Listはリスト構造じゃないよねぇ。 なんでListって名前にしたんだろうなぁ。Vectorじゃ駄目だったのかな。 あと、あくまでもSystem.Collections.Generic.LinkedListはノードが繋がってるだけなのね。 Composite的な再帰構造じゃ…

定義できない関数will-stop?

引数で与えられた関数が停止するかどうか調べる関数will-stop?を書いてみろよ。 あ、問題を簡単にするために、引数で与える関数の引数は空リストしか考えなくていいや。 というLeftcolumn氏の仰せです。

続けることにした

length*とweight*のくだりが分からなくてThe Little Schemerを読むのやめようとも思ったが、やめなくてよかったよ! ざっと目を通したら、この後がアツい内容っぽい。

ぽちっとな

プログラミングGauche作者: Kahuaプロジェクト,川合史朗出版社/メーカー: オライリージャパン発売日: 2008/03/14メディア: 大型本購入: 22人 クリック: 713回この商品を含むブログ (244件) を見る来たどー!日本語のSchemeの本だYO! しかもオライリーの動物…

やーめた

よし! length*とweight*のくだりは置いといて、さっさと先に進もうっと。

立ち戻る

さて、length*関数が出てくるまでのやりとりについて振り返ってみる。 何か見えてくるかもしれん、との淡い期待を込めて。

いまだに分からん

The Little Schemer 159ページ中ほどから Mr.Leftcolumn(以下L alignの引数にあるアトムの個数を数える関数を書けるかい? Mr.Rightcolumn(以下R もちろんさ (define length* (lambda (pora) (cond ((atom? pora) 1) (else (+ (length* (first pora)) (len…