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: \x -> x < 0.5 && x > -0.5 (Heinrich Apfelmus) 2. Re: \x -> x < 0.5 && x > -0.5 (Stephen Tetley) 3. Re: Re: \x -> x < 0.5 && x > -0.5 (Brent Yorgey) 4. Re: \x -> x < 0.5 && x > -0.5 (Christian Maeder) 5. haskell on snow leopard (Bernardas Jankauskas) 6. Re: Re: \x -> x < 0.5 && x > -0.5 (Edward Z. Yang) 7. Re: haskell on snow leopard (Luca Ciciriello) 8. Re: haskell on snow leopard (Tom Tobin) 9. Re: SOLVED - Stack overflow, but hard to understand (Michael Mossey) 10. Re: SOLVED - Stack overflow, but hard to understand (Magnus Therning) 11. Re: SOLVED - Stack overflow, but hard to understand (Michael Mossey) ---------------------------------------------------------------------- Message: 1 Date: Tue, 20 Oct 2009 12:08:19 +0200 From: Heinrich Apfelmus <apfel...@quantentunnel.de> Subject: [Haskell-beginners] Re: \x -> x < 0.5 && x > -0.5 To: beginners@haskell.org Message-ID: <hbk26k$bf...@ger.gmane.org> Content-Type: text/plain; charset=ISO-8859-1 Brent Yorgey wrote: > > Note that little-r 'reader' is just an informal name for the ((->) e) > monad, which is what your code was using. Control.Monad.Reader also > provides the big-R 'Reader' type, which is just a newtype wrapper > around a little-r reader, and does indeed have a 'runReader' method > (which just removes the newtype constructor). That is, > > newtype Reader r a = Reader { runReader :: r -> a } > > C.M.Reader also provides ReaderT, a monad transformer version of Reader. I thought Control.Monad.Reader also provides the needed instance Monad ((->) r) but this is actually provided by Control.Monad.Instances . Regards, apfelmus -- http://apfelmus.nfshost.com ------------------------------ Message: 2 Date: Tue, 20 Oct 2009 16:29:43 +0100 From: Stephen Tetley <stephen.tet...@gmail.com> Subject: [Haskell-beginners] Re: \x -> x < 0.5 && x > -0.5 To: beginners@haskell.org, christian.mae...@dfki.de Message-ID: <5fdc56d70910200829h1d4b2094y93f6c8fc19c20...@mail.gmail.com> Content-Type: text/plain; charset=ISO-8859-1 Christian Maeder wrote: > Hoogle did not find a function of type: > > (b -> b -> b) -> (a -> b) -> (a -> b) -> a -> b > > or (b -> c -> d) -> (a -> b) -> (a -> c) -> a -> d > > But maybe such a function is worth being added to Data.Function. Hello Christian This is the big Phi or S' combinator. I would certainly second its addition to Data.Function. sprime p q r s = p (q s) (r s) Best wishes Stephen ------------------------------ Message: 3 Date: Tue, 20 Oct 2009 11:37:15 -0400 From: Brent Yorgey <byor...@seas.upenn.edu> Subject: Re: [Haskell-beginners] Re: \x -> x < 0.5 && x > -0.5 To: beginners@haskell.org Message-ID: <20091020153715.ga2...@seas.upenn.edu> Content-Type: text/plain; charset=us-ascii On Tue, Oct 20, 2009 at 04:29:43PM +0100, Stephen Tetley wrote: > Christian Maeder wrote: > > > Hoogle did not find a function of type: > > > > (b -> b -> b) -> (a -> b) -> (a -> b) -> a -> b > > > > or (b -> c -> d) -> (a -> b) -> (a -> c) -> a -> d > > > > But maybe such a function is worth being added to Data.Function. > > Hello Christian > > This is the big Phi or S' combinator. I would certainly second its > addition to Data.Function. > > sprime p q r s = p (q s) (r s) But this function already exists in the standard libraries: it is called liftM2/liftA2, specialized to the ((->) e) monad/applicative instance. This is what the rest of the thread has been talking about. -Brent ------------------------------ Message: 4 Date: Tue, 20 Oct 2009 18:34:23 +0200 From: Christian Maeder <christian.mae...@dfki.de> Subject: [Haskell-beginners] Re: \x -> x < 0.5 && x > -0.5 To: Stephen Tetley <stephen.tet...@gmail.com> Cc: beginners@haskell.org Message-ID: <4adde68f.9080...@dfki.de> Content-Type: text/plain; charset=ISO-8859-1 Stephen Tetley schrieb: > Christian Maeder wrote: > >> Hoogle did not find a function of type: >> >> (b -> b -> b) -> (a -> b) -> (a -> b) -> a -> b >> >> or (b -> c -> d) -> (a -> b) -> (a -> c) -> a -> d >> >> But maybe such a function is worth being added to Data.Function. I did not find liftM2 (or liftA2) although I "knew" liftM2 and instance Functor/Monad ((->) a). > Hello Christian > > This is the big Phi or S' combinator. I would certainly second its > addition to Data.Function. > > sprime p q r s = p (q s) (r s) At least for documentation purposes (other than this thread) such an explicit definition makes sense to be put into a source. Be it just to show the (non-)obvious. Cheers Christian Btw. for the actual problem I suggest now: ((< 0.5) . abs) ------------------------------ Message: 5 Date: Tue, 20 Oct 2009 17:39:34 +0100 From: Bernardas Jankauskas <bena...@gmail.com> Subject: [Haskell-beginners] haskell on snow leopard To: beginners@haskell.org Message-ID: <af33e348-3acc-445b-8672-de55d66d3...@gmail.com> Content-Type: text/plain; charset=us-ascii; format=flowed; delsp=yes Hello, For two past weeks I have been trying to get Haskell working on my macbook pro with Snow Leopard, but unfortunately I was unable to get it. There are some solutions on the internet, but these are mostly useful when you already have ghci and haskell platform installed on your computer, while I can't even get it installed. I have Xcode 3.1 installed, but it seems that it is not the case. Maybe you could recommend any solution to this problem? Sincerely, Bernardas Jankauskas P.S.: I have attached two screenshots of what occurs for me when I am trying to install haskell platform and ghci. ------------------------------ Message: 6 Date: Tue, 20 Oct 2009 12:53:12 -0400 From: "Edward Z. Yang" <ezy...@mit.edu> Subject: Re: [Haskell-beginners] Re: \x -> x < 0.5 && x > -0.5 To: beginners <beginners@haskell.org> Message-ID: <1256057556-sup-7...@ezyang> Content-Type: text/plain; charset=UTF-8 Excerpts from Christian Maeder's message of Tue Oct 20 12:34:23 -0400 2009: > Stephen Tetley schrieb: > > Christian Maeder wrote: > > > >> Hoogle did not find a function of type: > >> > >> (b -> b -> b) -> (a -> b) -> (a -> b) -> a -> b > >> > >> or (b -> c -> d) -> (a -> b) -> (a -> c) -> a -> d > >> > >> But maybe such a function is worth being added to Data.Function. > > I did not find liftM2 (or liftA2) although I "knew" liftM2 and instance > Functor/Monad ((->) a). Perhaps a useful feature to add to Hoogle would be the ability to print both the generic type instance, and then a "specialized" version based off of the query that was made. Cheers, Edward ------------------------------ Message: 7 Date: Tue, 20 Oct 2009 19:20:42 +0200 From: Luca Ciciriello <luca_cicirie...@hotmail.com> Subject: Re: [Haskell-beginners] haskell on snow leopard To: Bernardas Jankauskas <bena...@gmail.com> Cc: beginners@haskell.org Message-ID: <blu0-smtp37fa3e8ca9cc95a11acf999a...@phx.gbl> Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes I belive I undertood that you have tried to install the Haskell platform. Had you tried to install just GHC using the Mac installer that you can find in: http://haskell.org/ghc/download_ghc_6_10_4.html ? Luca. P.S. I Think attachment are filtered in this mailing list. On Oct 20, 2009, at 6:39 PM, Bernardas Jankauskas wrote: > Hello, > > For two past weeks I have been trying to get Haskell working on my > macbook pro with Snow Leopard, but unfortunately I was unable to get > it. > There are some solutions on the internet, but these are mostly > useful when you already have ghci and haskell platform installed on > your computer, while I can't even get it installed. I have Xcode 3.1 > installed, but it seems that it is not the case. > > Maybe you could recommend any solution to this problem? > > Sincerely, > Bernardas Jankauskas > > P.S.: I have attached two screenshots of what occurs for me when I > am trying to install haskell platform and ghci. > _______________________________________________ > Beginners mailing list > Beginners@haskell.org > http://www.haskell.org/mailman/listinfo/beginners > ------------------------------ Message: 8 Date: Tue, 20 Oct 2009 13:18:49 -0500 From: Tom Tobin <korp...@korpios.com> Subject: Re: [Haskell-beginners] haskell on snow leopard To: Luca Ciciriello <luca_cicirie...@hotmail.com> Cc: beginners@haskell.org, Bernardas Jankauskas <bena...@gmail.com> Message-ID: <bf0b20a90910201118r2cbbfdefo33f3497bfde2b...@mail.gmail.com> Content-Type: text/plain; charset=UTF-8 On Tue, Oct 20, 2009 at 12:20 PM, Luca Ciciriello <luca_cicirie...@hotmail.com> wrote: > I belive I undertood that you have tried to install the Haskell platform. > Had you tried to install just  GHC using the Mac installer that you can find > in: http://haskell.org/ghc/download_ghc_6_10_4.html ? That's what finally worked for me, FWIW. I was also able to install the 6.12.1 RC on Snow Leopard. ------------------------------ Message: 9 Date: Tue, 20 Oct 2009 12:32:57 -0700 From: Michael Mossey <m...@alumni.caltech.edu> Subject: Re: [Haskell-beginners] SOLVED - Stack overflow, but hard to understand To: beginners@haskell.org Message-ID: <4ade1069.90...@alumni.caltech.edu> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Okay, I figured this out. mapM is not lazy, at least not for a monad that has state and under the circumstance you demand the state out the other side. I may rewrite the program. Or I may consider the ISS principle. ("Increase the stack, stupid.") -Mike ------------------------------ Message: 10 Date: Wed, 21 Oct 2009 06:38:01 +0100 From: Magnus Therning <mag...@therning.org> Subject: Re: [Haskell-beginners] SOLVED - Stack overflow, but hard to understand To: Michael Mossey <m...@alumni.caltech.edu> Cc: beginners@haskell.org Message-ID: <4ade9e39.3090...@therning.org> Content-Type: text/plain; charset=UTF-8; format=flowed On 20/10/09 20:32, Michael Mossey wrote: > Okay, I figured this out. mapM is not lazy, at least not for a monad that > has state and under the circumstance you demand the state out the other > side. If I understand what you are saying then this behaviour isn't unexpected. If you have a monad with state, and you ask for the final state, then it's likely that everything happening in that particular monad will has to be evaluated. > I may rewrite the program. Or I may consider the ISS principle. > ("Increase the stack, stupid.") You may also be able to improve the situation by adding a bit of strictness. In some cases the thunks resulting from laziness can take up a lot of space. Forcing evaluation, at well thought out locations in your program, may both speed things up and reduce memory/stack usage. /M -- Magnus Therning (OpenPGP: 0xAB4DFBA4) magnusï¼ therningï¼org Jabber: magnusï¼ therningï¼org http://therning.org/magnus identi.ca|twitter: magthe ------------------------------ Message: 11 Date: Wed, 21 Oct 2009 01:44:38 -0700 From: Michael Mossey <m...@alumni.caltech.edu> Subject: Re: [Haskell-beginners] SOLVED - Stack overflow, but hard to understand To: Magnus Therning <mag...@therning.org> Cc: beginners@haskell.org Message-ID: <4adec9f6.3050...@alumni.caltech.edu> Content-Type: text/plain; charset=UTF-8; format=flowed Magnus Therning wrote: > On 20/10/09 20:32, Michael Mossey wrote: >> Okay, I figured this out. mapM is not lazy, at least not for a monad that >> has state and under the circumstance you demand the state out the other >> side. > > If I understand what you are saying then this behaviour isn't > unexpected. If > you have a monad with state, and you ask for the final state, then it's > likely > that everything happening in that particular monad will has to be > evaluated. Hi Magnus, Yes, that's what I was trying to imply. I realized it is mathematically impossible for mapM to be lazy for a monad with state. mapM doesn't seem to be lazy anywhere. For example, this program main = do buffers <- forM ["file1.txt","file2.txt","file3.txt"] readFile print . take 1 . concat $ buffers will, according to my experiments with the profiler, read all three files. It's possible to imagine lazy behavior here, but no doubt there is a technical reason against it. > >> I may rewrite the program. Or I may consider the ISS principle. >> ("Increase the stack, stupid.") > > You may also be able to improve the situation by adding a bit of > strictness. > In some cases the thunks resulting from laziness can take up a lot of > space. > Forcing evaluation, at well thought out locations in your program, may both > speed things up and reduce memory/stack usage. You are probably right... I am having trouble spanning the gap between "my current understanding" and "well thought-out locations." Real World Haskell has a chapter on this, so I may look there. I was able to get the program to run by removing all places that I had created a chain of Rand computations that forced evaluation of the last one. I replaced these with computations that did not require evaluation of the last one. However, my program was still forced to read more files than it really needed in the end, as the above snippet demonstrates. Thanks, Mike ------------------------------ _______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners End of Beginners Digest, Vol 16, Issue 16 *****************************************