haskell-ja > Archives > 2009/07/21

2009/07/21 09:47:04 UTC[1..100]>>=pen
#
モナド則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
2009/07/21 11:13:11 UTCnwn
#
いろいろいじったら左単位元だけ満たさなくなったっぽい: http://hpaste.org/fastcgi/hpaste.fcgi/view?id=7314#a7314
#
*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 神過ぎる。なんだこれ
2009/07/21 11:18:54 UTCnwn
#
作者 Conal だ。またこなちゃんのしわざか
2009/07/21 11:22:35 UTCikegami
#
これは紹介されるべきだなあ
#
http://haskell.org/haskellwiki/Checkers
#
%(..
#
HAMA.jp では、テストとデバッギングセッションを作ろうと思ってるんだけど
#
Checkers はぜひとも採用
#
ていうか、QuickCheck の説明が最初にいるんだけど、まあ、スライドとか作ればいいか
2009/07/21 11:45:51 UTCnwn
#
テストセッションやるならこれとか: http://batterseapower.github.com/test-framework/
#
ていうかその前に cabal-install の紹介があるといいかも
#
むしろ cabal-install をインストールするだけのセッション(ハッカソン?)
2009/07/21 11:50:55 UTCikegami
#
それは Opening のあとやろうかなと : cabal-install
#
あと、自分のプロジェクトの .cabal の作り方、とか
2009/07/21 11:51:41 UTCnwn
#
なるほど。いいと思います > opening のあとに cabal-install
#
.cabal の作り方は mkcabal を紹介するのはどう?
#
あと cabal なプロジェクトでテストを走らせるための簡単な方法とか
#
あったあった: http://gbacon.blogspot.com/2009/06/setting-up-simple-test-with-cabal.html
#
とか言いつつも自分で試してなかったりする
2009/07/21 11:56:18 UTCikegami
#
まず最初に言うべきことは、「メモ帳と Wordpad は禁止です」
#
だとおもう...
#
でー、Emacs の haskell-mode の最新号は、.cabal のあるところから module path を見やがるので
#
.cabal がないと、ロードしたときに悲しいことになる
2009/07/21 11:58:49 UTCnwn
#
そこでつまづいてる子がいましたね
2009/07/21 11:58:52 UTCikegami
#
gvim か xyzzy か EclipseFP か leksah か...
#
あと、1 TAB = 4 spaces で、TAB 禁止 expand tab
2009/07/21 12:00:54 UTCnwn
#
EclipseFP/leksah は初心者にお勧めできるレベルなのかな
2009/07/21 12:01:14 UTCikegami
#
やーまだまだなんじゃないかな
#
かといって、vi 系か Emacs 系も敷居が低いわけではないというのがなんとも
2009/07/21 12:02:22 UTCnwn
#
むー、そこらへんのエディタを前提にしないで話をしないと行けないのか
2009/07/21 12:02:36 UTCikegami
#
まあ、質問しますけど
#
あと、http://cordpad.org/ でとりあえず試してもらう
2009/07/21 12:03:33 UTCnwn
#
http://codepad.org
2009/07/21 12:03:36 UTCikegami
#
まちがい
#
そうそう
2009/07/21 12:04:02 UTCnwn
#
それはいい
2009/07/21 12:04:04 UTCikegami
#
「わーい、C 最高」
#
とかいうオチはありそうだ
2009/07/21 12:09:33 UTCnwn
#
めっちゃリアルですね、それ
#
あ、lambdabot たんとお話ししてもらうのはどうでしょうか
2009/07/21 12:10:30 UTCikegami
#
いいアイデア
#
でも、lambdabot ちゃんは IO できないんだよね (´・ω・`)
2009/07/21 12:11:32 UTCnwn
#
とりあえず @faq してもらう
2009/07/21 12:12:16 UTCikegami
#
それでも lambdabot 投入はしよう
2009/07/21 12:12:19 UTCnwn
#
IO は codepad でやってもらうか GHC インストールしてからでもいいと思われる
2009/07/21 12:12:33 UTCikegami
#
Q & A コーナーは、設けようかとおもってます
#
いや、「Hello, world するモン」という子は多いと思われ
#
「おまいら、おちついて fact から」
2009/07/21 12:14:12 UTCnwn
#
落ち着いて考えればなんという関数脳 > 最初のプログラムが階乗
2009/07/21 14:15:18 UTC[1..100]>>=pen
#
モナド則2だけダメは
#
> My [1] >>= (\_ -> Nil)
My {unMy = *** Exception: No match in record selector Main.unMy
#
だった。orz
#
直せそうだけど汚くなりそう。
2009/07/21 23:08:09 UTCikegami
#
ここの分散 fact もおもしろいな : http://haskell.org/haskellwiki/Haskell_in_5_steps#Write_your_first_parallel_Haskell_program