Send Beginners mailing list submissions to beginners@haskell.org To subscribe or unsubscribe via the World Wide Web, visit http://www.haskell.org/mailman/listinfo/beginners or, via email, send a message with subject or body 'help' to beginners-requ...@haskell.org
You can reach the person managing the list at beginners-ow...@haskell.org When replying, please edit your Subject line so it is more specific than "Re: Contents of Beginners digest..." Today's Topics: 1. Re: Missing some functions in Hoogle (Ken Kawamoto) 2. Stymied by mutable arrays in the ST monad (Matthew Moppett) 3. Re: Stymied by mutable arrays in the ST monad (Tobias Brandt) 4. Re: Stymied by mutable arrays in the ST monad (Matthew Moppett) 5. Re: Stymied by mutable arrays in the ST monad (Matthew Moppett) ---------------------------------------------------------------------- Message: 1 Date: Fri, 25 May 2012 23:04:26 +0900 From: Ken Kawamoto <kentaro.kawam...@gmail.com> Subject: Re: [Haskell-beginners] Missing some functions in Hoogle To: Paulo Pocinho <poci...@gmail.com> Cc: beginners@haskell.org Message-ID: <cagbyeko6_eoodc-x2jfxkm0wafwxbhcr5r1fwokdvmtjg+j...@mail.gmail.com> Content-Type: text/plain; charset=ISO-8859-1 Thanks Paulo for your comment and sorry for late reply. On Tue, May 22, 2012 at 11:09 PM, Paulo Pocinho <poci...@gmail.com> wrote: > After testing Hoogle cabal package [4], it can either generate > databases for the current system or fetch the database from the > internet. However, database search only covered standard libraries. What does this part mean? With Hoogle package, you can generate databases for any library, but the search works only for standard libraries? Although this is consistent with what I experienced, it's a bit surprising because this means generating database doesn't make any sense, does it? Hayhoo seems to suit what I want. -- Ken On Tue, May 22, 2012 at 11:09 PM, Paulo Pocinho <poci...@gmail.com> wrote: > On 21 May 2012 00:55, Ken Kawamoto <kentaro.kawam...@gmail.com> wrote: > (...) >> Now I'm wondering if I'm missing something, or Hoogle supports only a >> predefined set of functions. >> Any advise would be appreciated. > > Hi. > > Hoogle [1] can search by type as well as by name. This currently only > works for standard Haskell libraries. > Hayhoo [2] is a string-based search only but also covers hackage [3]. > > After testing Hoogle cabal package [4], it can either generate > databases for the current system or fetch the database from the > internet. However, database search only covered standard libraries. > Having search by type in hackage would be great though. > > Hope this helps. > > -- > 1. http://www.haskell.org/hoogle/ > 2. http://holumbus.fh-wedel.de/hayoo/hayoo.html > 3. http://hackage.haskell.org/packages/hackage.html > 4. http://hackage.haskell.org/package/hoogle > > Regards, > Paulo ------------------------------ Message: 2 Date: Sat, 26 May 2012 02:50:57 +1000 From: Matthew Moppett <matthewmopp...@gmail.com> Subject: [Haskell-beginners] Stymied by mutable arrays in the ST monad To: beginners@haskell.org Message-ID: <CAMLEjZAuA4Fq+a29vL6j=sg9nrfkzwxvyrhvzz3hbdwde9z...@mail.gmail.com> Content-Type: text/plain; charset="iso-8859-1" I've been trying to use mutable arrays in the ST monad, and wrote out a little proof of concept function: idST :: [Int] -> [Int] idST xs = runST $ do array <- newListArray (1, (length xs)) xs return (getElems array) -- where idSt should be equivalent to id. And I get the error message: Couldn't match type `[Int]' with `Int' In the return type of a call of `getElems' In the first argument of `return', namely `(getElems array)' In a stmt of a 'do' block: return (getElems array) Obviously I'm making a very simple mistake here, but I can't seem to spot it. Can anyone offer some advice? -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://www.haskell.org/pipermail/beginners/attachments/20120526/e31d586b/attachment-0001.htm> ------------------------------ Message: 3 Date: Fri, 25 May 2012 19:05:01 +0200 From: Tobias Brandt <tob.bra...@googlemail.com> Subject: Re: [Haskell-beginners] Stymied by mutable arrays in the ST monad To: Matthew Moppett <matthewmopp...@gmail.com> Cc: beginners@haskell.org Message-ID: <caoowqio6wse+vfumes16sco43+jaujnjeguqtegyjve+-le...@mail.gmail.com> Content-Type: text/plain; charset=ISO-8859-1 On 25 May 2012 18:50, Matthew Moppett <matthewmopp...@gmail.com> wrote: > I've been trying to use mutable arrays in the ST monad, and wrote out a > little proof of concept function: > > idST :: [Int] -> [Int] > idST xs = runST $ do > ? ? array <- newListArray (1, (length xs)) xs > ? ? return (getElems array) > > -- where idSt should be equivalent to id. > > And I get the error message: > > Couldn't match type `[Int]' with `Int' > ? ? In the return type of a call of `getElems' > ? ? In the first argument of `return', namely `(getElems array)' > ? ? In a stmt of a 'do' block: return (getElems array) > > Obviously I'm making a very simple mistake here, but I can't seem to spot > it. Can anyone offer some advice? 'getElems array' already has type 'ST s [Int]', you don't need another 'return'. Furthermore you need to help out with the type inference a little bit (it's similar to the read-show problem). This should work: idST :: [Int] -> [Int] idST xs = runST $ do array <- newListArray (1, (length xs)) xs :: ST s (STArray s Int Int) getElems array (You could also replace STArray by STUArray.) ------------------------------ Message: 4 Date: Sat, 26 May 2012 03:43:04 +1000 From: Matthew Moppett <matthewmopp...@gmail.com> Subject: Re: [Haskell-beginners] Stymied by mutable arrays in the ST monad To: Tobias Brandt <tob.bra...@googlemail.com> Cc: beginners@haskell.org Message-ID: <CAMLEjZDJ_-0vyDXTBOpEm9g7BVC8FLvBQkLBfS13H804W=g...@mail.gmail.com> Content-Type: text/plain; charset="iso-8859-1" Thanks, Tobias. I guess my eyes kind of glazed over when I read "getElems :: (MArray a e m, Ix i) => a i e -> m [e]" in the docs, and didn't relate that to the meaning of "return"... lesson learnt. About the extra type info needed -- what part of the type "ST s (STArray s Int Int)" is the compiler unable to infer? I've worked out from this that the error message "no instance for"... might signal a missing type signature, but I'm having trouble working out the general lesson of when the compiler needs some extra hints. On 25 May 2012 18:50, Matthew Moppett <matthewmopp...@gmail.com> wrote: > I've been trying to use mutable arrays in the ST monad, and wrote out a > little proof of concept function: > > idST :: [Int] -> [Int] > idST xs = runST $ do > array <- newListArray (1, (length xs)) xs > return (getElems array) > > -- where idSt should be equivalent to id. > > And I get the error message: > > Couldn't match type `[Int]' with `Int' > In the return type of a call of `getElems' > In the first argument of `return', namely `(getElems array)' > In a stmt of a 'do' block: return (getElems array) > > Obviously I'm making a very simple mistake here, but I can't seem to spot > it. Can anyone offer some advice? 'getElems array' already has type 'ST s [Int]', you don't need another 'return'. Furthermore you need to help out with the type inference a little bit (it's similar to the read-show problem). This should work: idST :: [Int] -> [Int] idST xs = runST $ do array <- newListArray (1, (length xs)) xs :: ST s (STArray s Int Int) getElems array (You could also replace STArray by STUArray.) -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://www.haskell.org/pipermail/beginners/attachments/20120526/04e7ba17/attachment-0001.htm> ------------------------------ Message: 5 Date: Sat, 26 May 2012 04:25:37 +1000 From: Matthew Moppett <matthewmopp...@gmail.com> Subject: Re: [Haskell-beginners] Stymied by mutable arrays in the ST monad To: Tobias Brandt <tob.bra...@googlemail.com> Cc: beginners@haskell.org Message-ID: <camlejzbmaqdsktucckzxxoyxvklqy+eytu4_8uqfrkvnwa5...@mail.gmail.com> Content-Type: text/plain; charset="iso-8859-1" Brilliant. I think I've got it now. Thanks heaps, Tobias. On Sat, May 26, 2012 at 4:01 AM, Tobias Brandt <tob.bra...@googlemail.com>wrote: > On 25 May 2012 19:43, Matthew Moppett <matthewmopp...@gmail.com> wrote: > > About the extra type info needed -- what part of the type "ST s (STArray > s > > Int Int)" is the compiler unable to infer? > > It doesn't know which array type to use, because 'newListArray' is > polymorphic > in the type of array it returns. This type is not mentioned in > the signature of idST because the array is immediately consumed again by > 'getElems'. > > You can try it out in ghci (':t expr' gives you the type of an expression): > > :m +Data.Array.ST > let xs = [1,2,3 :: Int] > > :t xs > [Int] > > :t newListArray (1, length xs) xs > MArray a Int m => m (a Int Int) > > Applying getElems gets you this: > :t (newListArray (1, length xs) xs) >>= getElems > MArray a Int m => m [Int] > > From the 'runST' in your program, the compiler knows that m = ST s, > for some s, but there is nothing constraining 'a' further. > Any 'a' fulfilling the constraint 'MArray a Int (ST s)' will do. > Therefore we have to fix 'a' to some type, e.g. 'STArray s', but > 'STUArray s' would work too, in this case. > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://www.haskell.org/pipermail/beginners/attachments/20120526/e171d763/attachment-0001.htm> ------------------------------ _______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners End of Beginners Digest, Vol 47, Issue 21 *****************************************