[Haskell-cafe] advantages of using fix to define
rcursive functions
Donald Bruce Stewart
dons at cse.unsw.edu.au
Thu Jul 26 03:48:29 EDT 2007
voigt:
> Donald Bruce Stewart wrote:
> >harald.rotter:
> >
> >>Hi,
> >>
> >>I read about the usage of "fix" to define recursive functions. Although I
> >>think that I understood how to use "fix", I still wonder what the
> >>advantages of "fix" are (as compared to the "conventional" approach to
> >>define recursive functions).
> >>
> >>Any hints are appreciated.
>
> >So actually, I suppose it is useful for small, anonymous recursive
> >definitions.
>
> It also exposes the recursive computation structure for direct
> manipulation, enabling one to perform certain program
> transformations/refactorings. Search for "fixpoint fusion" and "fixed
> point promotion". While one might say: that's the business of a
> compiler, actually existing ones are not very sophisticated in that
> regard, so one might want to do such transformations "by hand"...
Oh, excellent point. Just as naming particular loop structures (such as
'map' or 'unfoldr') enable more precise optimisations, such as fusion,
so naming recursive functions saves the compiler some work discovering
the name.
-- Don
More information about the Haskell-Cafe
mailing list