2 ms·
This is mostly codifying things that are already widely implemented. (Of course, in Haskell-land "implemented in GHC" counts as "widely implemented"...) Here's
by gjm11 17y ago
This is mostly codifying things that are already widely implemented. (Of course, in Haskell-land "implemented in GHC" counts as "widely implemented"...)
Here's a brief list of what's changed (note: this includes the already-widely-implemented stuff) ...
Fix an annoyance in the language syntax that meant that (e.g.) an if/then/else construct inside a "do" needed to be indented in a weird way.
Allow module names to contain ".", providing an obvious way to make a hierarchy of modules.
Allow data declarations with no constructors. Apparently this is useful when engaging in various sorts of compile-time type system magic, where you have types that are used only for that magic and not because you ever expect to use a value of that type.
A grammar cleanup related to infix operators.
Add a standardized foreign function interface.
Another grammar cleanup: Haskell to-end-of-line comments begin with "--" unless that's part of a legal lexeme; it happens that colons are treated specially in the grammar, which mean that you couldn't make a symbol "--:--" because the "--" would always be parsed as beginning a comment. Not any more.
Guards in a pattern-match can now include their own pattern-matches; the guard fails if the pattern-match fails, otherwise it succeeds and the appropriate binding takes place.
Type inference is a bit more flexible (note: in practice most implementations behaved the more-flexible way already).
Document expected behaviour of the LANGUAGE pragma so it can be used portably to specify what language extensions your code needs.
Remove n+k patterns, which were always controversial.