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

SICP 1.46

iterative-improveは意外とすんなりできた。 こういう抽象化がレイヤーがあることをパッと思いつけるようになりたい。 fixed-pointの実装はgood-enough?の定義がわからなくて答えを見て納得した。

SICP 1.45

めんどいので省略。

SICP 1.44

ちょっと動かしてみたけど、これで正しいのかどうかわからん。

SICP 1.43

1.41の2回がn回になっただけだが、思ったよりも手こずった。 S式を評価した結果、何(値 or 関数)が返ってくるのかを考えるとわかりやすいようだ。 これは自前で型推論するってことだな。

SICP 1.42

1.41の引数が2つになっただけ。

SICP 1.41

MIT記法の中でlambdaを書くとちょっと不思議な感じがする。 lambdaが2回出てきた方が、関数を返す関数であることが見た目にわかりやすい。

SICP 1.40

答えを出すのは何でもないけど、実際に動かすのは面倒。 関数の定義があっちこっちに散らばっているんだもの。

予防接種

昨日インフルエンザの予防接種を受けたんだけど、今日になって身体がだるい。 そういうものなのかな? 2週間後にもう一度来いって言われたから、また行かないといけないんだけど、気が進まない。 そもそも予防接種自体、あまり喜んで受けるものじゃないな。

SICP 1.39

cont-fracを使って、とは書いてなかったけど、勝手に使った。 他の解き方はわからない。

SICP 1.38

これも、ただcont-fracを使っただけ。

SICP 1.37

1/φの近似で4桁の精度の解を得るための項数って、実際に試して求めればいいんだろうか。

SICP 1.36

ステップ数の比較は省略。

SICP 1.35

ただfixed-point関数を使うだけ。

accumulate

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…

SICP 1.34

これで良いのかな。Gaucheで試した動作とは一致する。 この問題を作った意図がわからん。

SICP 1.33

1.32から更に一段の抽象化。 素数判定とかを引っ張り出してくるのは面倒だけど、問題自体は簡単。

SICP 1.32

前の問題の一般化。こういうふうに順序立ててやると難しくない。 でもいきなり書けと言われると、できるかどうか疑わしい。

SICP 1.31

これも。

SICP 1.30

難しくなかった。

SICP 1.29

こんなんで良いのか? とりあえず結果は合ってる。

昨日は夢の中でゴキブリを5匹ほど退治した。殺虫剤を至近距離から噴射しまくった。目が覚めてから何だかぐったりした気分になった。