
No, making $! the primitive would not help. You can define seq from $!. I think seq is a "suitable" primitive, it's just that it ruins nice properties. The original formulation of seq in Haskell was the right one in my opinion: class Eval where seq :: a -> b -> b This way you get a context on anything that uses seq and you can tell that there is some funny business going on. -- Lennart On Jan 19, 2007, at 13:07 , Brian Hulley wrote:
Lennart Augustsson wrote:
On Jan 19, 2007, at 08:05 , apfelmus@quantentunnel.de wrote:
Thus, Hask is not a category, at least not as defined in the article. The problem is that (either) morphisms or the morphism composition ('.') are not internalized correctly in Haskell.
And this is why some of us think that adding polymorphic seq to Haskell was a mistake. :(
I've often wondered why seq is the primitive and not $! Would this solve the problem? Is there any solution that would allow excess laziness to be removed from a Haskell program such that Hask would be a category?
Thanks, Brian. -- http://www.metamilk.com