2010-06-01から1ヶ月間の記事一覧

sequenceを線形時間でfoldする

cpp

プリプロセッサメタプログラミングの話。Cプリプロセッサ上で値の列を表現するためのデータ構造の一つとしてsequenceというのがある(Boost.Preprocessorの用語)。 他の言語でいうリストや配列に似たもので、以下のような形をとる。 (0)(1)(2)(3) /* 0から3ま…

fib = 1 : 1 : zipWith (+) fib (tail fib) が遅いかどうかは、使い方に依存する

Haskellでフィボナッチ数を計算するコードとして、次のものが有名だ。 fib :: [Integer] fib = 1 : 1 : zipWith (+) fib (tail fib) これのn番目の要素を取得するコードがO(n^2)よりも遅いということを指摘した記事があった。 Haskellの「fib = 1:1:zipWith …

ICFP Programming Contest 2010

出た。今年の課題は、車と燃料を設計/販売して金儲けというもの。といってもリアルな設計ではなく、車は特定の形の連立不等式で、燃料はその解で、それぞれ表現される。車と燃料をセットで提出するのが基本で、さらに他人の設計した車に適合する燃料を作るこ…