タグ

ブックマーク / sumii.hatenablog.com (3)

  • 思いて学ばざれば則ち殆うし - sumiiのブログ

    あるところに同じようなことを(ほとんど成り行きで)書いたのですが、重要な問題のような気がしてきたので、こっちにも書いてみる。 一般に、関数型言語やプログラミング言語(および計算機科学、ないし任意の専門)についての情報は、 一般書・一般誌、Webやメーリングリストやブログ 教科書・専門書 論文 口頭での議論(学会発表や質疑応答、グループのミーティング、部屋での会話) などで交換されます。 で、一般に情報の「ディープさ」は上から下へ行くほど濃くなると思うのです(少なくとも僕の専門分野ではそう)。そのごく一部である1.だけ(しかも日語onlyで)「勉強」していろいろと議論するのは、(何もしないよりは良いのかもしれませんが)非常に危険です。その危険をちゃんと意識していればno problemですが。「高速道路」の話と同じことかも。 たとえば、日のネット(?)では今になって妙に持ち上げられている

    思いて学ばざれば則ち殆うし - sumiiのブログ
  • Yコンビネータって何に使うの? - sumiiのブログ

    という反応が複数。λ計算という「lambdaしかない」計算体系があって、それでも再帰が表現できる(のでチューリング完全である)ことを示すために使います。Schemeっぽく書くと e ::= x | (lambda (x) e) | (e1 e2)という構文と ((lambda (x) e1) e2) --> [e2/x]e1という簡約で定義される言語です(右辺はe1の中のxにe2を代入した式)。 そんなことよりも、λ計算を習ってないのにYコンビネータについて聞いたことがある、というgeneration gapに年をとったショックを受けたり。そういう私の20代も昨日(今日の深夜?)で終了。 追記:Haskellなどlazyな言語だったら、 (define (my-fib m) ((my-make-fib my-make-fib) m))の部分は (define my-fib (my-make

    Yコンビネータって何に使うの? - sumiiのブログ
  • 不動点演算子ふたたび - sumiiの日記

    (追記:Yコンビネータって何に使うの?) Yコンビネータ(Curryの不動点演算子)を説明するのがプチブーム(死語)らしいので、ふたたび挑戦。 まず、ふつーに再帰関数factをSchemeで定義してみる。 (define fact (lambda (n) (if (= n 0) 1 (* n (fact (- n 1))))))この定義は、右辺にfact自身が出現するので、再帰的定義なのであった。ここから右辺にfactが出現しないようにするのが目標。とりあえず、factを関数の引数として外から受け取るようにしてみる。 (define make-fact (lambda (my-fact) (lambda (n) (if (= n 0) 1 (* n (my-fact (- n 1)))))))これは( (make-fact fact) 10)みたく使えるが、make-factを呼び出す際に

    不動点演算子ふたたび - sumiiの日記
  • 1