2007-05-01から1ヶ月間の記事一覧

ラグランジュの四平方定理

リストモナドすごーい。 import System import Control.Monad lagrange :: Integer -> [(Integer, Integer, Integer, Integer)] lagrange x = do let seed = [ s^2 | s <- [0..(floor $ sqrt $ fromInteger x)]] a <- seed b <- [ b | b <- seed, b <= a ] c …

幽霊型

幽霊型。Money aなのに宣言部ではaを無視。id:syd_sydさんに教わる。詳しくはOCaml本見てねっ(笑)。 {-# OPTIONS -fglasgow-exts #-} data Money a = Money Float deriving Show data Naked data Taxed impose :: Money Naked -> Money Taxed impose (Money …

自然数

前にやった、自然数を生成するやつ。少しまともになった。id:Gemmaさんの助言による。 (define (make-natural) (let ((c '())) (lambda () (call/cc (lambda (yield) (let loop ((n 0)) (if (null? c) (call/cc (lambda (cont) (begin (set! c cont) (yield …

bisimulation checker モドキ

なんだろうこれ。1時間くらいで適当に作ったやつ。bisimulation かどうかを確かめる(?)もの。bisimulation じゃない場合には実行時エラーになります。 checker 関数に状態を2つ入れると計算が開始されます。"a.b.stop" は、"a***b***STOP"と書きます。先輩に…

wxHaskell

卒業研究で wxHaskell を使います。導入に苦労した(実際に苦労したのは僕というよりは id:syd_syd さんですが)ので MacOSX に wxHaskell を入れる方法をメモしておくことに。 wxWidgets の 2.6 を持ってきてビルドする。オプションとかは特にいじる必要なし…

bisimulation

Pi

やべぇ、意味わかんない。bisimulation という関係は常識なのだろうか。少なくともこの本には説明がない気がする…。 example a.(b.stop + b.stop) + a.b.stop 〜bis a.b.stop because the following is a bisimulation: a.(b.stop + b.stop) + a.b.stop a.b.…

http://d.hatena.ne.jp/mzp/20070428/coinのネタ。SICPを流し読みしてたら出てきたので。 coins :: Int -> [Int] -> [(Int, Int)] coins sum coins = zip coins $ snd $ foldr f (sum,[]) coins where f a (n,b) = (n `rem` a , (n `div` a):b) Main> coins …