<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:"Yu Gothic";
        panose-1:2 11 4 0 0 0 0 0 0 0;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"\@Yu Gothic";
        panose-1:2 11 4 0 0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style></head><body lang=DE link=blue vlink="#954F72"><div class=WordSection1><p class=MsoNormal>That is most likely, because ap is not in Prelude. You need to import Control.Monad.</p><p class=MsoNormal><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal style='border:none;padding:0cm'><b>Von: </b><a href="mailto:damien.mattei@gmail.com">Damien Mattei</a><br><b>Gesendet: </b>Mittwoch, 27. Februar 2019 11:54<br><b>An: </b><a href="mailto:whosekiteneverfly@gmail.com">Yuji Yamamoto</a><br><b>Cc: </b><a href="mailto:haskell-cafe@haskell.org">haskell-cafe</a><br><b>Betreff: </b>Re: [Haskell-cafe] example of monad fromhttp://learnyouahaskell.com not working</p></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal><span style='font-size:18.0pt'>can you give me a complete solution please?<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:18.0pt'>i suppose i can set pure = return<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:18.0pt'>but have some diffculties with <*> , ap does not works<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>On Wed, Feb 27, 2019 at 11:10 AM Yuji Yamamoto <<a href="mailto:whosekiteneverfly@gmail.com">whosekiteneverfly@gmail.com</a>> wrote:</p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm'><div><div><p class=MsoNormal>It's the one of the biggest changes of Haskell since LYHG was released.</p></div><div><p class=MsoNormal>As you guess, now any instance of Monad must be an instance of Applicative.</p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>So you have to declare Prob as an instance of Applicative:</p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>instance Applicative Prob where</p></div><div><p class=MsoNormal>   pure = ...</p></div><div><p class=MsoNormal>   f <*> x = ...</p></div><div><p class=MsoNormal><o:p> </o:p></p></div></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>2019<span style='font-family:"Yu Gothic",sans-serif'>年</span>2<span style='font-family:"Yu Gothic",sans-serif'>月</span>27<span style='font-family:"Yu Gothic",sans-serif'>日</span>(<span style='font-family:"Yu Gothic",sans-serif'>水</span>) 18:56 Damien Mattei <<a href="mailto:damien.mattei@gmail.com" target="_blank">damien.mattei@gmail.com</a>>:</p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm'><div><div><div><div><div><p class=MsoNormal><span style='font-size:18.0pt'>i'm trying this example (see code below) from :<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:18.0pt'><a href="http://learnyouahaskell.com/for-a-few-monads-more#making-monads" target="_blank">http://learnyouahaskell.com/for-a-few-monads-more#making-monads</a><o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:18.0pt'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:18.0pt'>when trying to compile this:<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:18.0pt'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:18.0pt'>import Data.Ratio<br><br>newtype Prob a = Prob { getProb :: [(a,Rational)] } deriving Show<br><br><br>instance Functor Prob where<br>    fmap f (Prob xs) = Prob $ map (\(x,p) -> (f x,p)) xs<br><br>    <br>thisSituation :: Prob (Prob Char)<br>thisSituation = Prob<br>    [( Prob [('a',1%2),('b',1%2)] , 1%4 )<br>    ,( Prob [('c',1%2),('d',1%2)] , 3%4)<br>    ]<br><br>flatten :: Prob (Prob a) -> Prob a<br>flatten (Prob xs) = Prob $ concat $ map multAll xs<br>    where multAll (Prob innerxs,p) = map (\(x,r) -> (x,p*r)) innerxs   <br><br><br>instance Monad Prob where<br>  return x = Prob [(x,1%1)]<br>  m >>= f = flatten (fmap f m)<br>  fail _ = Prob []<br><br><br><br>l1 = Prob [('a',2%3),('b',1%3)]<br><br>multAllExt :: (Prob a, Rational) -> [(a, Rational)]<br>multAllExt (Prob innerxs,p) = map (\(x,r) -> (x,p*r)) innerxs<br><br>--Main> :type multAllExt<br>--multAllExt :: (Prob a, Rational) -> [(a, Rational)]<br><br><br>--Main> multAllExt (l1,1 % 4)<br>--[('a',1 % 6),('b',1 % 12)]<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:18.0pt'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:18.0pt'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:18.0pt'>i get this error:<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:18.0pt'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:18.0pt'>GHCi, version 8.4.3: <a href="http://www.haskell.org/ghc/" target="_blank">http://www.haskell.org/ghc/</a>  :? for help<br>Prelude> :load monade.hs<br>[1 of 1] Compiling Main             ( monade.hs, interpreted )<br><br>monade.hs:21:10: error:<br>    • No instance for (Applicative Prob)<br>        arising from the superclasses of an instance declaration<br>    • In the instance declaration for ‘Monad Prob’<br>   |<br>21 | instance Monad Prob where<br>   |          ^^^^^^^^^^<br>Failed, no modules loaded.<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:18.0pt'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:18.0pt'>it fails when i add the last part of the example:<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:18.0pt'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:18.0pt'>instance Monad Prob where<br>  return x = Prob [(x,1%1)]<br>  m >>= f = flatten (fmap f m)<br>  fail _ = Prob []<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:18.0pt'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:18.0pt'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:18.0pt'>seems the Monad needs an instance of the Applicative to be instanciated...<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:18.0pt'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:18.0pt'>what is wrong? <o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:18.0pt'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:18.0pt'>regards,<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:18.0pt'>Damien<o:p></o:p></span></p></div></div></div></div></div><p class=MsoNormal>_______________________________________________<br>Haskell-Cafe mailing list<br>To (un)subscribe, modify options or view archives go to:<br><a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>Only members subscribed via the mailman list are allowed to post.</p></blockquote></div><p class=MsoNormal><br clear=all><br>-- </p><div><div><div><div><div><div><div><p class=MsoNormal><span style='font-family:"Yu Gothic",sans-serif'>山本悠滋</span><br>twitter: <a href="https://twitter.com/igrep" target="_blank">https://twitter.com/igrep</a><br>GitHub: <a href="https://github.com/igrep" target="_blank">https://github.com/igrep</a></p></div></div></div></div></div></div></div></blockquote></div><p class=MsoNormal style='margin-left:4.8pt'>GitLab: <a href="https://gitlab.com/igrep" target="_blank">https://gitlab.com/igrep</a><br>Facebook: <a href="http://www.facebook.com/igrep" target="_blank">http://www.facebook.com/igrep</a></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>