Am Montag 01 Juni 2009 19:02:36 schrieb michael rice: > All good so far, but then tried to convert Failable from Computation to > Monad > > > instance Monad Failable where > return = Success > fail = Fail > >>= (Success x) f = f x > >>= (Fail s) _ = Fail s > mplus (Fail _) y = y > mplus x _ = x > > > and got the following error. > > > Prelude> :l graph5 > [1 of 1] Compiling Main ( graph5.hs, interpreted ) > > graph5.hs:34:4: parse error on input `>>=' > Failed, modules loaded: none. > Prelude> >
When you use an operator in prefix position, you must enclose it in parentheses, like you must enclose a function in backticks if you use it infix. So the definition of (>>=) should read (>>=) (Success x) f = f x (>>=) (Fail s) _ = Fail s or, defining it in infix position, (Success x) >>= f = f x (Fail s) >>= _ = Fail s > > Complete code follows. > > Michael > _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe