<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On 22 Jan 2009, at 09:42, Erik de Castro Lopo wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>Hi all,<br><br>I'm using hoogle (<a href="http://www.haskell.org/hoogle/">http://www.haskell.org/hoogle/</a>) as my main Haskell<br>documentations source, but I'm stuck on using ghc 6.8.2 and I keep<br>finding stuff listed in hoogle that isn't available in 6.8.2.<br><br>Is there any solution other than installing a more recent version of<br>ghc?</div></blockquote><br></div><div>Are you sure that you're finding things that are unavailable in 6.8.2? &nbsp;There's been very little change to the APIs exposed to beginners since then. &nbsp;It may be that you're not importing the module required, when hoogle gives you a result like this:</div><div><br></div><div><span class="Apple-style-span" style="font-family: '-webkit-sans-serif'; font-size: 13px; "><table style="padding-left: 20px; padding-right: 20px; position: static; z-index: auto; "><tbody><tr><td class="mod" style="padding-bottom: 0px; padding-top: 0px; vertical-align: bottom; text-align: right; font-size: 8pt; color: rgb(0, 136, 0); text-decoration: none; background-color: white; "><a class="dull" href="http://hackage.haskell.org/packages/archive/containers/0.2.0.0/doc/html/Data-Map.html" style="background-color: white; text-decoration: none; color: rgb(0, 136, 0); ">Data.Map</a></td><td class="ans" style="padding-bottom: 0px; padding-top: 0px; "><a class="dull" href="http://hackage.haskell.org/packages/archive/containers/0.2.0.0/doc/html/Data-Map.html#v:insert" style="background-color: white; text-decoration: none; color: black; "></a><a href="http://hackage.haskell.org/packages/archive/containers/0.2.0.0/doc/html/Data-Map.html#v:insert"><b>insert</b></a><a class="dull" href="http://hackage.haskell.org/packages/archive/containers/0.2.0.0/doc/html/Data-Map.html#v:insert" style="background-color: white; text-decoration: none; color: black; ">&nbsp;:: Ord k =&gt; k -&gt; a -&gt; Map k a -&gt; Map k a</a></td></tr><tr><td class="pkg" style="padding-bottom: 10px; padding-top: 0px; text-align: right; vertical-align: top; font-size: 8pt; color: rgb(136, 136, 136); text-decoration: none; background-color: white; "><a class="dull" href="http://hackage.haskell.org/cgi-bin/hackage-scripts/package/containers" style="background-color: white; text-decoration: none; color: rgb(136, 136, 136); ">containers</a></td><td class="doc" style="padding-bottom: 10px; padding-top: 0px; vertical-align: top; font-size: 8pt; color: rgb(136, 136, 136); "><div id="d4" class="shut" style="max-height: 1.5em; overflow-x: hidden; overflow-y: hidden; color: rgb(136, 136, 136); "><a class="docs" onclick="return docs(4)" href="http://hackage.haskell.org/packages/archive/containers/0.2.0.0/doc/html/Data-Map.html#v:insert" style="margin-top: 2px; margin-right: 4px; margin-bottom: 2px; margin-left: 2px; width: 10px; height: 10px; display: block; float: left; background-repeat: no-repeat; color: rgb(136, 136, 136); background-image: url(http://haskell.org/hoogle/res/more_gray.png); background-position: 50% 50%; "></a><i>O(log n)</i>. Insert a new key and value in the map. If the key is already present in the map, the associated value is replaced with the supplied value.&nbsp;<a href="http://haskell.org/hoogle/?hoogle=insert" style="color: rgb(136, 136, 136); ">insert</a>&nbsp;is equivalent to&nbsp;<a href="http://haskell.org/hoogle/?hoogle=insertWith" style="color: rgb(136, 136, 136); ">insertWith</a>&nbsp;<a href="http://haskell.org/hoogle/?hoogle=const" style="color: rgb(136, 136, 136); ">const</a>.&gt; insert 5 'x' (fromList [(5,'a'), (3,'b')]) ==&nbsp;</div></td></tr></tbody></table></span></div><div><font class="Apple-style-span" face="-webkit-sans-serif" size="3"><span class="Apple-style-span" style="font-size: 13px;">you must use an import in your file to get access to it, as follows:</span></font></div><div><font class="Apple-style-span" face="-webkit-sans-serif" size="3"><span class="Apple-style-span" style="font-size: 13px;"><br></span></font></div><div><font class="Apple-style-span" face="-webkit-sans-serif" size="3"><span class="Apple-style-span" style="font-size: 13px;">import Data.Map (insert)</span></font></div><div><font class="Apple-style-span" face="-webkit-sans-serif" size="3"><span class="Apple-style-span" style="font-size: 13px;"><br></span></font></div><div><font class="Apple-style-span" face="-webkit-sans-serif" size="3"><span class="Apple-style-span" style="font-size: 13px;">or you can import the whole module like this:</span></font></div><div><font class="Apple-style-span" face="-webkit-sans-serif" size="3"><span class="Apple-style-span" style="font-size: 13px;"><br></span></font></div><div><font class="Apple-style-span" face="-webkit-sans-serif" size="3"><span class="Apple-style-span" style="font-size: 13px;">import Data.Map</span></font></div><div><font class="Apple-style-span" face="-webkit-sans-serif" size="3"><span class="Apple-style-span" style="font-size: 13px;"><br></span></font></div><div><font class="Apple-style-span" face="-webkit-sans-serif" size="3"><span class="Apple-style-span" style="font-size: 13px;">but this causes namespace polution, so it's not a great idea. &nbsp;You can also import it so that you have to qualify all your uses of the functions:</span></font></div><div><font class="Apple-style-span" face="-webkit-sans-serif" size="3"><span class="Apple-style-span" style="font-size: 13px;"><br></span></font></div><div><font class="Apple-style-span" face="-webkit-sans-serif" size="3"><span class="Apple-style-span" style="font-size: 13px;">import qualified Data.Map</span></font></div><div><font class="Apple-style-span" face="-webkit-sans-serif" size="3"><span class="Apple-style-span" style="font-size: 13px;"><br></span></font></div><div><font class="Apple-style-span" face="-webkit-sans-serif" size="3"><span class="Apple-style-span" style="font-size: 13px;">f x y = Data.Map.insert 5 x y</span></font></div><div><font class="Apple-style-span" face="-webkit-sans-serif" size="3"><span class="Apple-style-span" style="font-size: 13px;"><br></span></font></div><div><font class="Apple-style-span" face="-webkit-sans-serif" size="3"><span class="Apple-style-span" style="font-size: 13px;">-- or</span></font></div><div><font class="Apple-style-span" face="-webkit-sans-serif" size="3"><span class="Apple-style-span" style="font-size: 13px;"><br></span></font></div><div><font class="Apple-style-span" face="-webkit-sans-serif" size="3"><span class="Apple-style-span" style="font-size: 13px;">import qualified Data.Map as M</span></font></div><div><font class="Apple-style-span" face="-webkit-sans-serif" size="3"><span class="Apple-style-span" style="font-size: 13px;"><br></span></font></div><div><font class="Apple-style-span" face="-webkit-sans-serif" size="3"><span class="Apple-style-span" style="font-size: 13px;">f x y = M.insert 5 x y</span></font></div><div><font class="Apple-style-span" face="-webkit-sans-serif" size="3"><span class="Apple-style-span" style="font-size: 13px;"><br></span></font></div><div><font class="Apple-style-span" face="-webkit-sans-serif" size="3"><span class="Apple-style-span" style="font-size: 13px;">Sorry if I just taught my granny to suck eggs. &nbsp;If you are doing this and really are coming up against APIs that aren't in 6.8, then yes, you need to upgrade your compiler. &nbsp;There's no real disadvantage to doing this though, except possibly that you lose support for one or two libraries that are taking a while to update (gtk2hs springs to mind). &nbsp;You do however gain access to libraries that need newer compiler features (vector-space springs to mind).</span></font></div><div><font class="Apple-style-span" face="-webkit-sans-serif" size="3"><span class="Apple-style-span" style="font-size: 13px;"><br></span></font></div><div><font class="Apple-style-span" face="-webkit-sans-serif" size="3"><span class="Apple-style-span" style="font-size: 13px;">Bob</span></font></div></body></html>