##入れようと思ったら OpenGL のインストールでこけた
#ライチュウのほうが絶対かわいい
#ひひ
#> let m = Nil :: MyList Int in (m >>= return) == m
False
#なんですう。
#あ、そうか、instance Arbitrary (MyList a) で Nil が返らないようになってる
#後で試してみるね
#OpenGL のインストールがこけたのは -split-objs の仕業だった
#instance (Arbitrary a) => Arbitrary (MyList a) where
arbitrary = do
lis <- listOf arbitrary
return $ if null lis then Nil else My lis
#monad laws:
left identity: +++ OK, passed 100 tests.
right identity: *** Failed! Falsifiable (after 1 test):
Nil
associativity: +++ OK, passed 100 tests.
#:-)
#サンキューです。
#data MMMMaybe a = Nil | Null | None | Some a deriving (Eq, Show)
instance Monad MMMMaybe where
return = Some
Nil >>= _ = Nil
Null >>= _ = Nil
None >>= _ = Nil
Some a >>= k = k a
#pen さんの偽モナド見てたら思いついた
#これも右結合則だけ成り立たない(はず。QuickCheckしただけ)
#右結合則ってなんだ右単位元です
#お、いけそうですね。すごい。
#これで2、3則の簡単な例そろったかな。
#1、2則だった。
#1則のみダメ、3則のみダメももっと簡単な例あるかな。
#今日は層圏トポス勉強会の日か。
#私はトラポリン練習があるのでいけないけど。
#cabal-install をようやくインストール中 (いつも Setup.(l)hs していた派)
#さくさくインストールしてくれるのは助かるけど、既存の distribution の依存関係と仲良くしなきゃいけないから、それが心配かなー
#まあいいや、皆が使ってる test-framework 便利だから、ぼくも sudo cabal install --prefix=/hoge test-framework するお
#はいったお、嬉しいお (^^
#Haddock はモジュールのヘッダに小見出しだけでもつけておくと後々いろいろと楽だなあ