Dan Weston westondan at imageworks.com
Wed Sep 26 20:23:58 EDT 2007

```Not to beat a dead horse, but I wasn't suggesting to rename the fix
function that everyone knows and loves:

fix :: (a -> a) -> a
fix f = let f' = f f' in f'

I was merely trying to suggest that it would be wise to rename the
fix to mean:

fix :: Eq x => (x -> x) -> x -> x
fix f x = if x == x' then x else fix f x'
where x' = f x

It is this latter function which I suggested to be renamed limit, since
it returns the limit (converged value) of f^n x, where n -> inf, and
doesn't even have the same type or arity as the standard fix function.

Somehow this (admittedly minor) point got lost in the heat of battle.

Dan Weston

Jonathan Cast wrote:
> On Wed, 2007-09-26 at 17:09 -0500, Derek Elkins wrote:
>> On Wed, 2007-09-26 at 14:12 -0700, Jonathan Cast wrote:
>>> On Wed, 2007-09-26 at 11:43 -0700, Dan Weston wrote:
>>>> It seems no one liked idea #2. I still think fix is the wrong name for
>>>> this, maybe limit would be better.
>>> It calculates least fixed points.  `fix' is as good a name as any.
>>>
>>> `limit' is terrible; the argument to fix, a -> a, is neither a sequence
>>> nor diagram nor net type, and hence its values don't have limits...
>>>
>>> jcc
>>>
>>> PS Yes, I know fix a = sup_{i=0}^inf f^i(bot).  That sequence is rather
>>> different than the input function...
>> Actually, f :: a -> a -is- a diagram and its limit -is- fix f.
>
> In what way?  I'm not disputing you, but I don't see how to interpret it
> as such.
>
>>   That
>> said, limit is still a horrible name for it.  fix isn't much better, and
>> Y is even worse.  I'm not sure what an immediately intuitive name would
>> be, so might as well go with the historical one.
>
> recursive (at least for my usage).
>
> jcc
>
>
> _______________________________________________