<div dir="auto">Hi Mike,</div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Nov 26, 2021 at 12:12 AM mike h <<a href="mailto:mike_k_houghton@yahoo.co.uk">mike_k_houghton@yahoo.co.uk</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><br>
I have <br>
data Expr a = Var a | Add (Expr a) (Expr a) <br>
<br>
and would like to write<br>
<br>
convert :: Expr (Maybe a) -> Maybe (Expr a)</blockquote><div dir="auto"><br></div><div dir="auto">With the requisite setup, convert has a one word definition. But more on that later.</div><div dir="auto"><br></div><div dir="auto">Yehoshua has already given you a nudge in the right direction. Others will surely chime in if you get stuck grinding out something the compiler will type check.</div><div dir="auto"><br></div><div dir="auto">What we could discuss is higher level. Where would use this convert function? What utility could you obtain from it?</div><div dir="auto"><br></div><div dir="auto"><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)" dir="auto"><br>
<br>
which returns Nothing if there is an occurrence of Nothing inside the<br>
input expression e, otherwise it returns Just e', where e'<br>
is a new expression where the internal values of type a are not wrapped in Just.<br>
You should use the functionality of the Maybe monad to implement<br>
the convert function. <br>
<br>
<br>
Thanks <br>
Mike<br>
_______________________________________________<br>
Beginners mailing list<br>
<a href="mailto:Beginners@haskell.org" target="_blank">Beginners@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners</a><br>
</blockquote></div></div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature">-- Kim-Ee</div>