| ... | ... | @@ -17,6 +17,18 @@ The motivation was perhaps that without such constraints, class dictionaries cou |
|
|
|
However this restriction is not implemented by Hugs, following a suggestion of Mark Jones in
|
|
|
|
[ Typing Haskell in Haskell](http://www.cse.ogi.edu/~mpj/thih/), and can be turned off in GHC with `-fglasgow-exts`.
|
|
|
|
|
|
|
|
## interaction with existentials
|
|
|
|
|
|
|
|
|
|
|
|
If this were allowed than existential types of the form
|
|
|
|
|
|
|
|
```wiki
|
|
|
|
data SomeFoo = exists a . Foo a => SomeFoo a
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
would have to carry around a dictionary for Num as well as Foo in dictionary passing implementation of type classes.
|
|
|
|
|
|
|
|
## Cons
|
|
|
|
|
|
|
|
- In the absence of this restriction, a type-preserving translation of a type system including either [AssociatedTypes](associated-types) or [FunctionalDependencies](functional-dependencies) becomes much more difficult (see Section 4.3.4 of [ Associated Types with Class](http://www.cse.unsw.edu.au/~chak/papers/CKPM05.html), POPL'05, and [ClassMethodTypes/TypedTrans](class-method-types/typed-trans)). Even if we adopt neither of these two type system features for Haskell', we will impact future directions of Haskell.
|
| ... | ... | |