<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Nov 15, 2015 at 9:29 AM, Graham Gill <span dir="ltr"><<a href="mailto:math.simplex@gmail.com" target="_blank">math.simplex@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div bgcolor="#FFFFFF" text="#000000">More simply<br>
    <font face="Courier New, Courier, monospace">> :t pure<br>
      pure :: Applicative f => a -> f a<br>
      > pure [1..5]<br>
      [1,2,3,4,5]<br>
    </font><br>
    <font face="Courier New, Courier, monospace">a</font> must match a
    list of Nums, but then where did <font face="Courier New, Courier,
      monospace">f</font> go? Is ghci using some default instance?</div></blockquote></div><br></div><div class="gmail_extra">Yes it is. The default instance is IO. It's a common gotcha, see <br><br><a href="https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/interactive-evaluation.html#actions-at-prompt">https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/interactive-evaluation.html#actions-at-prompt</a><br><br></div><div class="gmail_extra">and the example of how "return True" defaults to IO Bool.<br></div><div class="gmail_extra"><br></div><div class="gmail_extra">Might I compliment you on this:<br><br><font face="Courier New, Courier, monospace">
      sequenceA' :: Applicative f => [f a] -> f [a]<br>
      sequenceA' = foldr (\fa fla -> (:) <$> fa <*> fla)
      (pure [])<br><br></font></div><div class="gmail_extra">There are strong arguments that this is the best way of writing sequenceA.<br></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature">-- Kim-Ee</div></div>
</div></div>