Tomasz Zielonka wrote: > On Tue, May 29, 2007 at 02:19:31PM +0200, Tomasz Zielonka wrote: > >> On Tue, May 29, 2007 at 12:15:23PM +0200, Vincent Kraeutler wrote: >> >>> ever the interested amateur, i admittedly remain stumped by fix (there's >>> evidence i'm not the only one [1]) >>> >> The above code is equivalent to >> >> let l = 1 : scanl (+) 1 l in l >> >> which is a bit easier to decipher. >> >> The rest is maths and the subtleties of lazy evaluation. >> > ... and these are the things you need to focus on to understand this > code. In this case the use of fix is almost a small syntactic issue - > you can eliminate it by inlining its definition. > > Best regards > Tomek > > > i see that the definition of fix (from Control.Monad.Fix) could not be any simpler:
> fix f = let x = f x in x same goes for the type: Prelude> :t Control.Monad.Fix.fix Control.Monad.Fix.fix :: (a -> a) -> a it's just that i find it difficult to get concrete intellectual mileage out of it. i can reproduce results for specific examples (and even manipulate them a bit), but feel like i'm missing something deep yet simple. say, i would not know where and how to apply it. so obviously true understanding is still missing. reminds me of my first encounters with $H \psi = E \psi$. ;-) most likely, i should just more carefully read the references i cited myself ;-) anyhow. if someone has a "pedestrian's guide to the fixed point operator" lying around, a link would be much appreciated. kind regards, v.
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
