Skip to content

Instantly share code, notes, and snippets.

@jutememo
Created January 31, 2010 22:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jutememo/291292 to your computer and use it in GitHub Desktop.
Save jutememo/291292 to your computer and use it in GitHub Desktop.
-- Monad の (>>=) に相当
comb m n = let (a, log1) = m
(b, log2) = n a
in (b, log1 ++ log2)
-- Monad の (>>) に相当
comb_ m n = m `comb` \x -> n
-- Monad の return に相当
ret x = (x, "")
-- 出力のための関数
out x = ((), show x ++ ",")
outStr x = ((), x)
main = print $ outStr "begin: " `comb_`
ret (1 + 2) `comb` \a ->
out a `comb_`
ret (a * 3) `comb` \b ->
out b `comb_`
ret (b - 4) `comb` \c ->
out c `comb_`
outStr " :end" `comb_`
ret c
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment