際際滷

際際滷Share a Scribd company logo
Monadなんてどうってことなかった
表云啼很
2015?03?21?モナド児A茶氏
こんにちは
表云啼很(@igrep)?25r=
Haskellの茶氏を惟造笋辰箸蠅泙后
Monadなんてどうってことなかった
ただの侏クラスだった
嚠めことわるとここでのMonadはプログラミングで聞う
Monadだった
蒙にHaskellのMonadが嶄伉だった
☆あくまでもMonadを仝聞う々ことしかしないただのプログ
ラマからの麼である泣をご否浮ください。?vim(_ _)mer
Monadなんてどうってことなかった
ただの侏クラスだった
こういう協xの侏クラスだった
class Monad m where
return :: a -> m a
(>>=) :: m a -> (a -> m b) -> m b
ただの侏クラスだけど`った
なんか笋癖垢し修できる
hoge uID = do
fname <- lookup uID firstNameDB
lname <- lookup uID lastNameDB
return $ fname ++ lname
だったり、
ただの侏クラスだけど`った
こんなん
foo = do
tell ["hello, "]
tell ["world!"]
だったり、
ただの侏クラスだけど`った
こんなんだったり...。
main = do
putStr "こんなんだったり"
replicateM_ 3 $ do
threadDelay 1000000
putStr "."
putStrLn "。"
採がどうなってんの。
gでなんかしてるだけだった
?の栽、
gでなんかしてるだけだった
?のところでなんかしてるだけだった。
醤悶議にはJustかNothingか登協してるだけだった。
gでなんかしてるだけだった
?の栽、
gでなんかしてるだけだった
?のところでtellをg佩するたびになんかしてるだ
けだった。
醤悶議には哈方に嚥えたものをログとして弖して
るだけだった。
desugarしたらもっとgだった
lookup uID firstNameDB >>= (fname -> ...)
>>=?がなんかしてる
やっぱりJustかNothingか登協してる
ほかも寄悶匯wだった
List:?勣殆を1ずつ函り竃してる
State:?v方が卦した仟しい彜Bで厚仟してる
Parser:?嚥えられた猟忖双をMしてる
IO:?なんかいろいろやってる
ほかも寄悶匯wだった
なんやかんやで寄並なことはだいたい>>=の嶄でやって
る
だからMonadはMonadとしてひとくくりにできる。
揖じなのは
箭のモナドt。
箭のモナドt
仝g|採もしない々I尖(return)があること
箭のモナドt
do隈で
do
a <- do
b <- foo
bar b
baz a
みたいにいたり、
箭のモナドt
do隈で
do
b <- foo
do
a <- bar b
baz a
みたいにY栽の碧圭に櫃鯤垢錣覆てよくなっていること
┐海寮と念のスライドの箭が駅ず揖じ吭龍になること
`うのは
>>=でやってること。
>>=でやってること
仝箭のモナドt々を困燭擦从里世辰討い
およそ仝返Aき々っぽいものであればなんでもいい。
Stateも、IOも、あるんだよ
>>=でやってること
採もしてなくたっていい(Identity?Monad)
碧並してなくってもいい(ニ`ト?Monad)
}方のMonadがやってることを篠せ鹿めても┫鶺孱いい
Monad?Transformer
採だったんだ...
仝採でもいい々からyしい。
なんだかいろいろできるのでまとまらない┐茲Δ牧える
そのクセdo隈なんて喘吭して蒙eQい。
まとめ
HaskellのMonadはあくまでも侏クラスだった
寄並なことはだいたい>>=でやってた
やってることはみんな`った
みんなちがって、みんないい。
ニ`トでもいい。
採でもできるからよくわからなくなっていた

More Related Content

Monadなんてどうってことなかった - Monadなんてただの侏クラス