山本悠滋
2015-03-21 モナド基礎勉強会
vim(_ _)merhaskell class Monad m where return :: a -> m a (>>=) :: m a -> (a -> m b) -> m bhaskell hoge uID = do fname <- lookup uID firstNameDB lname <- lookup uID lastNameDB return $ fname ++ lnamehaskell foo = do tell ["hello, "] tell ["world!"]haskell main = do putStr "こんなんだったり" replicateM_ 3 $ do threadDelay 1000000 putStr "." putStrLn "。"
の場合、
のところでなんかしてるだけだった。
具体的にはJustかNothingか判定してるだけだった。
の場合、
のところで(tellを実行するたびに)なんかしてるだけだった。
具体的には引数に与えたものをログとして追記してるだけだった。
>>=の中でやってる!return)があることdo記法で
haskell do a <- do b <- foo bar b baz ado記法で
haskell do b <- foo do a <- bar b baz a>>=でやってること。>>=でやってることStateも、IOも、あるんだよ>>=でやってることIdentity Monad)do記法なんて用意して特別扱い。>>=でやってたSpace, Right Arrow or swipe left to move to next slide, click help below for more details