Hacker News new | comments | show | ask | jobs | submit login

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.




Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact

Search: