Paul writes,
   
   I think it's important to realize that laws aren't being entirely
   lost -- they're just being weakened a (wee) bit, in the form of
   carrying an extra constraint.  For example, eta conversion:
   
     \x -> f x  =  f
     
   must simply be modified slightly:
   
     \x -> f x  =  f    if f /= _|_

Indeed.  Notice that there is a similar difference between call-by-need
and call-by-value beta:

        (\x -> u) t  =  u[t/x]                          call-by-need

        (\x -> u) t  =  u[t/x]  if  t /= _|_            call-by-value

But here we seem to think the difference is important.  So why is
it important for beta, but unimportant for eta?  Or are we deluding
ourselves in thinking it is important?

Cheers,  -- P

Reply via email to