2011-09-01から1ヶ月間の記事一覧

Reactive+Gtkでライフゲーム

GUIとFRPの練習に作ってみた。 ↓参考 http://d.hatena.ne.jp/maoe/20100109/1263059731 ただし、Gtk+との連携は試行錯誤の末なので、もしかしたら正統のやりかたでないかもしれない。ソースコード module Main where import FRP.Reactive import FRP.Reactiv…

gtk2hsのインストール

Cabalの入れ方によっては、インストールにつまずくので、メモ。 まず最初に(僕の環境では)、alex, happy なるパッケージが必要だった。 $ sudo apt-get install alex $ cabal install alex happy (もちろん、aptでlibgtk*とかは入ってる必要があるけど、…

不動点コンビネータについてメモ

不動点コンビネータとは、domainとtargetが一致している写像を取り、その不動点すなわちであるような点の一つを返す写像のこと。 すなわち、関数を不動点コンビネータとすると、任意のに対して、 を満たす。上の定義では、数学的に不動点コンビネータが必ず…

スタック構造でStateモナド

Haskellでは、変数に再代入ができないので、例えばスタックに対する処理として、 typedef struct _IStack{ int val; struct _IStack *next; } IStack; int popIStack (IStack **stack) { int ret = (*stack)->val; IStack *tmp = (*stack)->next; /*こんな破…

並べかえ

をしてみようと思って、書いてみた。 module Main where import Debug.Trace import Random permutation [] = [[]] permutation s = concatMap (makeTail) [0..length s-1] where makeTail n = uncurry (\x xs->map (x:) $ permutation xs) $ pullElem n s p…

モナドの勉強を始めようと思ったが

その前に、リストがモナドのインスタンスだという事を実感しようと思う。 昔作ったエラトステネスの篩関数のリスト内包表記部分をモナドの演算子で書いてみるみる。 -- sieve.hs sieve [] = [] sieve (x:xs) = x:sieve[y|y<-xs,y`mod`x/=0] sieveM [] = [] s…

k乗の級数

とある必要があって をNの式として求めないといけないことがあった。 k=1,2,3の場合については、高校の授業でやるよね。 それ以上の場合についても、次の方法を使えば良いということもその時わかった。 つまり、 なのだから、これを整理して、次の漸化式にな…

(Integer,Integer)へのリニアアクセス

方程式の整数解を力技で見つけよう思った時に、から、への全単射があると便利、というより、それが無いと解けないとすら言える。数学的にこれらの濃度が等しい事を証明するためには、が、有限集合の可算個の和集合に書ける事を言えば良かったから、あらわに…