2008-12-01から1ヶ月間の記事一覧
iterative-improveは意外とすんなりできた。 こういう抽象化がレイヤーがあることをパッと思いつけるようになりたい。 fixed-pointの実装はgood-enough?の定義がわからなくて答えを見て納得した。
めんどいので省略。
ちょっと動かしてみたけど、これで正しいのかどうかわからん。
1.41の2回がn回になっただけだが、思ったよりも手こずった。 S式を評価した結果、何(値 or 関数)が返ってくるのかを考えるとわかりやすいようだ。 これは自前で型推論するってことだな。
1.41の引数が2つになっただけ。
MIT記法の中でlambdaを書くとちょっと不思議な感じがする。 lambdaが2回出てきた方が、関数を返す関数であることが見た目にわかりやすい。
答えを出すのは何でもないけど、実際に動かすのは面倒。 関数の定義があっちこっちに散らばっているんだもの。
昨日インフルエンザの予防接種を受けたんだけど、今日になって身体がだるい。 そういうものなのかな? 2週間後にもう一度来いって言われたから、また行かないといけないんだけど、気が進まない。 そもそも予防接種自体、あまり喜んで受けるものじゃないな。
cont-fracを使って、とは書いてなかったけど、勝手に使った。 他の解き方はわからない。
これも、ただcont-fracを使っただけ。
1/φの近似で4桁の精度の解を得るための項数って、実際に試して求めればいいんだろうか。
ステップ数の比較は省略。
ただfixed-point関数を使うだけ。
SICPの1章で出てきたaccumulateって、foldlと良く似ている。 Haskellで書くとこんな感じ。コンパイルはしてない。 accumulate combiner null-value term a next b = let l = [x | x <- iterate next a, x < b] l' = map term l in foldl combiner null-value…
これで良いのかな。Gaucheで試した動作とは一致する。 この問題を作った意図がわからん。
1.32から更に一段の抽象化。 素数判定とかを引っ張り出してくるのは面倒だけど、問題自体は簡単。
前の問題の一般化。こういうふうに順序立ててやると難しくない。 でもいきなり書けと言われると、できるかどうか疑わしい。
これも。
難しくなかった。
こんなんで良いのか? とりあえず結果は合ってる。
昨日は夢の中でゴキブリを5匹ほど退治した。殺虫剤を至近距離から噴射しまくった。目が覚めてから何だかぐったりした気分になった。