| 92 | | * I'll write more about type equalities |
| | 94 | The big innovation in GHC's type system has been the gradual |
| | 95 | introduction of indexed type families in the surface syntax, and of |
| | 96 | type equalities in the internal machinery. |
| | 97 | |
| | 98 | Indexed data families (called "associated data types" when |
| | 99 | declared in type classes) are fairly simple, and they work fine |
| | 100 | in GHC 6.8.1. Indexed type families (aka "associated type synonyms") |
| | 101 | are a different kettle of fish, especially when combined with |
| | 102 | the ability to mention type equalities in overloaded types, thus: |
| | 103 | {{{ |
| | 104 | f :: forall a b. (a ~ [b]) => ... |
| | 105 | }}} |
| | 106 | Tom Schrijvers spent three months at Cambridge, working on |
| | 107 | the theory and implementation of a type inference algorithm. As |
| | 108 | a result we have a partially-working implementation, and we |
| | 109 | understand the problem much better, but there is still much to |
| | 110 | do, both on the theoretical and practical front. It's trickier |
| | 111 | than we thought! We have a short paper [http://research.microsoft.com/%7Esimonpj/papers/assoc-types/index.htm Towards open type functions for Haskell] which |
| | 112 | describes some of the issues, and an [http://hackage.haskell.org/trac/ghc/wiki/TypeFunctions wiki page] that we keep up to date; it has a link to details of implementation status. This is all joint work with |
| | 113 | Martin Sulzmann, Manuel Chakravarty, and Tom Schrijvers. |
| | 114 | |
| | 115 | |
| | 116 | == Data parallel Haskell == |
| | 117 | |
| | 118 | MANUEL: can you write something? |
| | 119 | |