 
            Hello! I have a function like this: http://rafb.net/p/8E66FI29.html, starting with evalState. The problem is with checkPredName cause it's return type is SemanticError what's not a monadic value but case waiting for m a (as the error message sais), but if I use return to checkPredName then ofc the pattern match will fail. How can I fix this? Regards, David
 
            On 23 Jan 2009, at 15:40, Kovacs David wrote:
Hello!
I have a function like this: http://rafb.net/p/8E66FI29.html, starting with evalState. The problem is with checkPredName cause it's return type is SemanticError what's not a monadic value but case waiting for m a (as the error message sais), but if I use return to checkPredName then ofc the pattern match will fail. How can I fix this?
This looks a lot to me like you need to look at the Error e => Either e applicative. Bob
 
            On 23 Jan 2009, at 15:40, Kovacs David wrote:
Hello!
I have a function like this: http://rafb.net/p/8E66FI29.html, starting with evalState. The problem is with checkPredName cause it's return type is SemanticError what's not a monadic value but case waiting for m a (as the error message sais), but if I use return to checkPredName then ofc the pattern match will fail. How can I fix this?
Oops, sorry, I meant monad, because this monad unfortunately doesn't have it's associated Applicative instance (which is much nicer to work with). You can ofc create the standard applicative instance: instance Error e => Applicative (Either e) where pure = return (<*>) = ap Bob
 
            Kovacs David wrote:
Hello!
I have a function like this: http://rafb.net/p/8E66FI29.html, starting with evalState. The problem is with checkPredName cause it's return type is SemanticError what's not a monadic value but case waiting for m a (as the error message sais), but if I use return to checkPredName then ofc the pattern match will fail. How can I fix this?
Regards, David
You can use liftM/fmap to lift a function into a monad: case (checkPredName pn . snd) `fmap` get of ...
 
            Daniel Schoepe wrote:
Daniel Schoepe wrote:
You can use liftM/fmap to lift a function into a monad: case (checkPredName pn . snd) `fmap` get of ...
I'm sorry, I misunderstood the problem, so this suggestion wouldn't work either. Could you give some more information on what SemanticResult is?
_______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners
It looks like this: data SemanticResult = Ok | Error String;
participants (3)
- 
                 Daniel Schoepe Daniel Schoepe
- 
                 Kovacs David Kovacs David
- 
                 Thomas Davie Thomas Davie