
Or you could derive Traversable for Expr
Then sequenceA can be used:
https://hoogle.haskell.org/?hoogle=f%20(m%20a)%20-%3E%20m%20(f%20a)
On Thu 25 Nov 2021, 19:54 יהושע ולך,
convert (Var mx) = mx >>= (return .Var x)
Should also be the non-do-notation. (again, typing from a phone, and not tested)
On Thu, Nov 25, 2021, 19:46 יהושע ולך
wrote: I can't actually cheok right now, but ``` convert (Var mv) = do v <- mv return $ Var v ```
is the "do notation" which should work. (and similarly for the other expression)
On Thu, Nov 25, 2021, 19:13 mike h
wrote: Hi, This isn’t homework! I’ve been staring at this for several hours - and that usually works. I also tried typed holes to no avail. I thinks it is quite simple really but I’ve gone past seeing it!
I have data Expr a = Var a | Add (Expr a) (Expr a)
and would like to write
convert :: Expr (Maybe a) -> Maybe (Expr a)
which returns Nothing if there is an occurrence of Nothing inside the input expression e, otherwise it returns Just e', where e' is a new expression where the internal values of type a are not wrapped in Just. You should use the functionality of the Maybe monad to implement the convert function.
Thanks Mike _______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
_______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners