タグ

2009年4月16日のブックマーク (2件)

  • Y Combinatorって言いにくいから不動点演算子で。 (リリカル☆Lisp 開発日記)

    なんか最近(*) Y Combinator(以下『不動点演算子』)の話題が各所であがっていますが、 あれこれ話はあるものの結局のところ、 F(YF) = YF という式を成り立たせるもの――"不動点"という名の通り、YFをFの不動点にするものだと思います。 (ここの説明が分かりやすいかと。) 不動点演算子自身はこれ以上でも以下でもなく、使い道し次第かと。 記号や演算を最小限にしたのがλ計算だって話もあがってますが、 単純にするならもっと単純にできます。 K ≡ λxy.x S ≡ λxyz.(xz)yz この二つを使えば関数抽象(関数の作成)をすることなく、 関数適用(関数の呼び出し)だけで全てを表せます。 例えば、チャーチ数の 0≡λgu.u は ((s ((s (k s)) (k k))) (k k)) と表せますし、 チャーチ数の後者関数 suc≡λxgu.g((x

  • SICPを読む(25) 1.3.3(1) 区間二分法による方程式の解の探索 - ボクノス

    今回は区間二分法。 中高生なら喉から手が出る程欲しいプログラムだ!! 方程式の解をプログラムで求めてしまおうという素晴らしい発想。 これで宿題は楽チンに・・・。 区間二分法 f(x)=0の解を求める。 f(x)をひとつづつ解いて、半分の半分の半分の・・・として、走査する方向が右か、左かを決定し、x軸との交点を探す。 x軸との交点こそが方程式f(x)=0の解だ。 非常に地道な作戦・・・。 二分法 - Wikipedia はんぶんの、はんぶんの、はんぶんの・・・。バイナリサーチと同じ考え方。 欠点 x軸の「交点」でないと解がでない。 つまり、の解は出ない。「接線」なので。 収束が遅い コーディング 理論がわかったとろで、コーディング。 (define (average a b) (/ (+ a b) 2.0)) (define (search f neg-point pos-point) (l

    SICPを読む(25) 1.3.3(1) 区間二分法による方程式の解の探索 - ボクノス