Roberto Zunino wrote:
> Dominic Steinitz wrote:
>> This would give
>>
>> = \x -> bot x
>>
>> and by eta reduction
> 
> This is the point: eta does not hold if seq exists.
> 
>   undefined `seq` 1 == undefined
>   (\x -> undefined x) `seq` 1 == 1
> 

Ok I've never used seq and I've never used unsavePerformIO. Provided my
program doesn't contain these then can I assume that eta reduction holds
and that (.) is categorical composition?

> The "(.) does not form a category" argument should be something like:
> 
>   id . undefined == (\x -> id (undefined x)) /= undefined
> 
> where the last inequation is due to the presence of seq. That is,
> without seq, there is no way to distinguish between undefined and (const
> undefined), so you could use a semantic domain where they coincide. In
> that case, eta does hold.

It would be a pretty odd semantic domain where 1 == undefined. Or
perhaps, I should say not a very useful one.

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to