Lazy Kに関するfumiexcelのブックマーク (2)

  • 世界一短い自己紹介 - Life Goes On

    R 教授による S 大学での講義録。 はじめに かねてから話していたとおり、今回はクワインについて講義する。 そもそもクワインとは何か?自分自身と同一の文字列を出力するプログラムのことである。自己言及のパラドックスに絡めて語られることもあるが、あくまでも、自身の「表現」つまり文字列を出力するだけなので、プログラマの諸君はそれほど混乱することもないだろう。 コンビネータ計算でクワインというと、以前に fumi 氏が記事を書いている。基的な考え方はそこに書かれている通りである。 まず「関数の表現」を得るために、「関数」を何らかの方法でコード化(符号化)する。この「コード」を入力として「関数の表現」と「コードの表現」を出力できれば、関数(コード)= 関数の表現 ++ コードの表現 ≒ 関数(コード)の表現、となりクワインの完成である。 符号化その1(16161) fumi 氏はチャーチ数のリス

    世界一短い自己紹介 - Life Goes On
  • こんな表作るより先に print-as-golf を作るべきではないだろうか - 週1でも日記

    ごめん、また Lazy K の話なんだ。 チャーチ数にはやたらと (S(KS)K) が出てくるので、(S(KS)K) を纏めると短くなることが多い。ということで、 (S(KS)K) を後ろにつけるとチャーチ数になる式。0、1、4、16、64 など prelude.scm、prelude-numbers.scm のままの方が短くなる数もあるので注意。 0 K(KI) 1 KI 2 SS(KI) 3 SS(SS(KI)) 4 SSI(SS(KI)) 5 SS(SSI(SS(KI))) 6 S(SSS)(SS(KI)) 7 SS(S(SSS)(SS(KI))) 8 S(S(KS)(SS))I(SS(KI)) 9 SS(SS)(SS(KI)) 10 SS(SS(SS)(SS(KI))) 11 SS(SS(SS(SS)(SS(KI)))) 12 S(SSS)(SS(SS(KI))) 13 SS(S(

    こんな表作るより先に print-as-golf を作るべきではないだろうか - 週1でも日記
    fumiexcel
    fumiexcel 2012/12/26
    チャーチ数の実装
  • 1