Advertisement
C4Cypher

Monads in mercury

Aug 12th, 2014
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 0.29 KB | None | 0 0
  1. :- module monad.
  2.  
  3. :- interface.
  4.  
  5. :- type monad(M, T) ---> monad(M, T).
  6.  
  7. :- typeclass monad(M) where [
  8.  
  9.     % (>>=) :: m a -> (a -> m b) -> m b
  10.     func bind(
  11.         monad(M, T1),
  12.         func(T1) = monad(M, T2)
  13.     ) = monad(M, T2),
  14.  
  15.     % return :: a -> Maybe a
  16.     func return(T) = monad(M, T)
  17.  
  18. ].
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement