vincent: > 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.
I use it when I need a local loop expression, maybe once every couple of months. A real world example from xmonad, f = fix $ \again -> do more <- checkMaskEvent d enterWindowMask ev when more again That is, keep sucking up X events till there's no 'more'. Of course, you can always just name your loop with 'where' and use that. f = go where go = do more <- checkMaskEvent d enterWindowMask ev when more go TMTOWTDI with recursion :-) -- Don _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe