#モナド則2(右単位元)のみ満たさない偽モナド多分できた。
#data MyList a = Nil | My { unMy :: [a] } deriving (Show,Eq)
instance Monad MyList where
return x = My [x]
Nil >>= _ = My []
(My xs) >>= k = My $ xs >>= (unMy.k)
#> let m = Nil :: MyList Int in (m >>= return) == m
False
##*Main> quickBatch $ monad (undefined :: MyList (Int,Int,Int))
monad laws:
left identity: *** Failed! Falsifiable (after 1 test and 1 shrink):
<function>
0
right identity: +++ OK, passed 500 tests.
associativity: +++ OK, passed 500 tests.
#ていうか checkers 神過ぎる。なんだこれ
#作者 Conal だ。またこなちゃんのしわざか
#これは紹介されるべきだなあ
##%(..
#HAMA.jp では、テストとデバッギングセッションを作ろうと思ってるんだけど
#Checkers はぜひとも採用
#ていうか、QuickCheck の説明が最初にいるんだけど、まあ、スライドとか作ればいいか
##ていうかその前に cabal-install の紹介があるといいかも
#むしろ cabal-install をインストールするだけのセッション(ハッカソン?)
#それは Opening のあとやろうかなと : cabal-install
#あと、自分のプロジェクトの .cabal の作り方、とか
#なるほど。いいと思います > opening のあとに cabal-install
#.cabal の作り方は mkcabal を紹介するのはどう?
#あと cabal なプロジェクトでテストを走らせるための簡単な方法とか
##とか言いつつも自分で試してなかったりする
#まず最初に言うべきことは、「メモ帳と Wordpad は禁止です」
#だとおもう...
#でー、Emacs の haskell-mode の最新号は、.cabal のあるところから module path を見やがるので
#.cabal がないと、ロードしたときに悲しいことになる
#そこでつまづいてる子がいましたね
#gvim か xyzzy か EclipseFP か leksah か...
#あと、1 TAB = 4 spaces で、TAB 禁止 expand tab
#EclipseFP/leksah は初心者にお勧めできるレベルなのかな
#やーまだまだなんじゃないかな
#かといって、vi 系か Emacs 系も敷居が低いわけではないというのがなんとも
#むー、そこらへんのエディタを前提にしないで話をしないと行けないのか
#まあ、質問しますけど
###まちがい
#そうそう
#それはいい
#「わーい、C 最高」
#とかいうオチはありそうだ
#めっちゃリアルですね、それ
#あ、lambdabot たんとお話ししてもらうのはどうでしょうか
#いいアイデア
#でも、lambdabot ちゃんは IO できないんだよね (´・ω・`)
#とりあえず @faq してもらう
#それでも lambdabot 投入はしよう
#IO は codepad でやってもらうか GHC インストールしてからでもいいと思われる
#Q & A コーナーは、設けようかとおもってます
#いや、「Hello, world するモン」という子は多いと思われ
#「おまいら、おちついて fact から」
#落ち着いて考えればなんという関数脳 > 最初のプログラムが階乗
#モナド則2だけダメは
#> My [1] >>= (\_ -> Nil)
My {unMy = *** Exception: No match in record selector Main.unMy
#だった。orz
#直せそうだけど汚くなりそう。
#