
Just to show what kind of problems we are currently facing. The following type checks in our EHC compiler and in Hugs, but not in the GHC: module Test where data T s = forall x. T (s -> (x -> s) -> (x, s, Int)) run :: (forall s . T s) -> Int run ts = case ts of T g -> let (x,_, b) = g x id in b Doaitse Swierstra On Apr 17, 2007, at 12:41 AM, Stefan O'Rear wrote:
On Mon, Apr 16, 2007 at 03:54:56PM +0100, Simon Marlow wrote:
- left-to-right impredicative instantiation: runST $ foo
This concerns me. With each ad-hoc extension of the type system, I worry that soon the GHC type system will become so byzantine and ill-specified that the type checker can only be cloned, not substantially improved on. I personally have a type checker idea I am working on, but I doubt I will ever be able to implement features such as this, because the type checking abstraction is now leaking badly. Once the Hindley-Damas-Milner algorithm is exposed, I fear programmers will rely on it and progress in Haskell typechecker implementation will be effectively halted. (Yes, I know I'm a bit late in complaining...)
- list fusion
Nitpick - you did mean stream fusion, right?
We think the above feature set makes for a pretty strong 6.8 release.
What do you think of this plan? Are there features/bug-fixes that you really want to see in 6.8?
Good code generation for loops. I understand they are rare in practice, but it's kinda disheartening to write memset() and see in the asm loop 11 memory references, 9 to the stack (numbers from unreliable memory).
I don't mind the plan, either.
Stefan _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users