2006-04-17 (Monday) [長年日記]
■ Recursion vs. Iteration # Ruby, Haskell
about 404 Blog Not Found , Roccoの日記 , ひげぽん OSとか作っちゃうかMona-
Lambda Calculusの基本は読んだので, アルゴリズムは把握しているんですよね. ちょっとドーピング?
Rubyで書くとこんな感じ*1.
#!/usr/bin/env ruby
def fib(n)
return 1 if n == 1 or n == 2
return fib(n - 1) + fib(n - 2)
end
def fib2(n)
fib = [1, 1]
(n - 1).times { fib << fib[-1] + fib[-2] }
return fib[-2]
end
ラムダ式の計算ではどうなるかというと, fib2と同じような流れで無限リストを定義し, 遅延評価で必要なとこだけとってくれば 簡単に計算できますよ.と.
たぶん,Haskellでzipと再帰を使って書く人が現れて Haskellはやっぱすげーとなりそうな予感. そんなこと言うならお前が書いてみろ, と自己ツッコミしつつ書いてみる.
fib = 1 : 1 : [ a+b | (a,b) <- zip fib (tail fib) ] take 8 fib [1,1,2,3,5,8,13,21] fib !! 6 13
簡潔すぎるな.
そういえば,SCIP(
計算機プログラムの構造と解釈(ジェラルド・ジェイ サスマン/ジュリー サスマン/ハロルド エイブルソン/Gerald Jay Sussman/Julie Sussman/Harold Abelson/和田 英一))はドクターの授業で読んだな.
ボクはドクターではないので, 趣味で参加していたようなもんですけど(単位がもらえない).
ちなみに,その講義の前半では
Domains and Lambda-Calculi (Cambridge Tracts in Theoretical Computer Science)(Roberto M. Amadio/Pierre-Louis Curien)という
本でラムダ計算について勉強しました.
講義の後半にラムダ計算の応用について, SCIPのSchemを観察してみた感じです.
むーん.ラムダ計算に関しては 簡約マシンを自分で作ったり してましたね. あと,predで感動したり してた記録が日記に.
*1 ちなみに,この形のブロックの書き方はボクは魅せるときにしか使わないです.
■ 冒険Ruby
じゃなくて,
冒険ルビ―The best 3 stories by Osamu Tezuka (秋田文庫)(手塚 治虫)でした.
昨日試験の帰りに買ったマンガ.
悪いことばかりしてるとお仕置きお化けがでますよ,というお話. (要約しすぎだ!バカ!!)
なぜか,鋼の錬金術師のオチを思い出したよ...
■ Gentooにするかのう
昨日はついでにバイト先のマシン用のハードディスクも買っておいた. 9380円で250GBだもんなぁ.すげぇよ.デフレディスク(?).
バッファ2MBで5400rpmだけど...(^^;;
せっかくシステムを入れ替えるのだから,変わったものにしようかなぁと画策中. Gentoo Linux, Solaris, Infernoなどが思い浮かんだけど, この中で一番普通に使えそうなのはGentooか.Solarisもまぁ,いけるか. Infernoはまぁ,アレだな.(何
ふむ. Gentooは他のディストロと比べて,インストールの方法が異色. つっても,FreeBSDな人にとってはあまり新しい概念はないな. ただ,LiveCDでブートして, インストール領域に必要なバイナリを展開したあとに, chrootしてmake buildkernel, make installkernelしてるよーなもんですよね. そもそもPortageが*BSD由来ですか.そうですか.
追記.Gentooのminimalインストールディスクから起動するも, CD-ROMドライブのマウントに失敗する... 一体,お前はどこから起動したんだ?









>ドクターの授業で読んだな<br>ドクターの授業の教科書であることにちょっと安心しました。
ボクの大学はカリキュラムが温いかもしれません.情報を専攻していても関数型の言語は履修の必要がなかったりします.<br>数学科ではそういう過程もごく普通にあるらしいので,そちらの方がちょっとお得感がありますね...
私は情報なんて知らない世界なので、うらやましっす。<br>ちゃんと情報も取得しておけばよかったなぁ。