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