コード書き初め「一二三」
書き初めに、以下のお題に答えます。 C++の問題ですが、 Javascript で。
1から1000までプリントせよ。ただし、ループ文や条件分岐文を使わずに。
c++ - Printing 1 to 1000 without loop or conditionals - Stack Overflow
コード(Firefox 専用)
var zero = function(f) function(x) x; function succ(c) function(f) function(x) f(c(f)(x)) function add(n,m) function(f) function(x) m(f)(n(f)(x)) function multiply(n,m) function(f) function(x) n(m(f))(x) function power(n,m) function(f) function(x) m(n)(f)(x) function cton(c) c(function(x) {document.write(x + 1 + '\n'); return x + 1;})(0) var two = succ(succ(zero)); var three = succ(two); var five = add(two, three); var thousand = power(multiply(two,five),three); cton(thousand);
実行例:
参考
道 (TAO) から一が生まれ, 一から二が生まれ, 二から三が生まれ, 三から万物が生まれ, 云々
Church numerals and Lambda Calculus
近況報告
新人1年目です。
仕事で Allegro Common Lisp を使っています。
いい処理系です。性能もいいし、ドキュメントもしっかりしてるし、 Emacs インタフェースもよくできてるし、マルチプラットフォームと国際化もバッチリだし。
うちの部長もよく言っていますが、確かに仕事で使うなら Allegro Common Lisp ですね。
うちの会社は ウェブサービス屋さんではないので、「入社したらウェブ技術とはお別れかな」と思ったら、全然そんなことなかったです。
おまけに、仕事で RDF とか セマンティックウェブの勉強もさせてもらいました。
書き初めといいつつ、年末年始もずっとコードを書いてました。
まとまった時間がとれたら片付けようと思っていたコードで、
Firefox 拡張で、 TCP/IP ソケットを開いて、 XMPP を nsISAXXMLReader でパースして、digest-md5 認証するやつができました。
今年もよろしくお願いします。