ANNOUNCE: Helium, for Learning Haskell, version 1.1
Arjan van IJzendoorn
Tue, 11 Mar 2003 11:30:47 +0100
We are proud to announce version 1.1 of Helium. It can
be found at the Helium website:
Version 1.1 has the following improvements:
- An installer for Windows systems for an improved out-of-
- A cool Java-based graphical interpreter called Hint
written by a student at our institute. It has a nice GUI
with colours, toolbar buttons and menu's. The best feature
is that it integrates with your favourite editor and you
can jump to the exact locations of messages by clicking on
- New warnings and hints for common mistakes: "sin .3",
"X = 5" (see below for examples of messages)
- Completely new presentation of type errors with more
- Much improved syntax error messages thanks to a new lexer.
And thanks to Parsec we can tell not only what was
unexpected, but also what would be legal at that position.
- The command-line interpreter is now called 'texthint' to
avoid conflicts with hmake's 'hi' (sorry!). TextHint is
improved in many ways. For one, it now accepts file
paths after :l. Other improvements can be found if you
- User manuals for the different tools (helium, hint,
texthint) and other helpful information on the Helium
- We've compiled Helium with Oxygen (ghc -O2) and this makes
the compiler twice as fast. Great work, GHC people!
- One well-placed 'seq' makes Helium another 25% faster.
- Very many minor bug fixes
- The webpage is simpler, wider and easier to navigate thanks
to a road map
the Helium team
Examples of Helium messages
These messages where generated by typing expressions on the
texthint prompt. If you compile a file with these errors you
will get exact error locations.
Prelude> [(1, 3]
Unexpected close bracket ']'
Hint: Expecting a close bracket for '('
Prelude> sinn .2
Warning: Function composition (.) immediately followed by number
Hint: If a Float was meant, write "0.2"
Otherwise, insert a space for readability
Undefined variable "sinn"
Hint: Did you mean "sin" ?
Prelude> map [1..10] even
Type error in application
expression : map [1 .. 10] even
term : map
type : (a -> b) -> [a] -> [b]
does not match : [Int] -> (Int -> Bool) -> c
probable fix : re-order arguments
Prelude> let X = 5 in X
Left hand side pattern defines no variables
Undefined constructor "X"
Hint: Use identifiers starting with a lower case letter
to define a function or a variable
Undefined constructor "X"
Prelude> 1+chr '0'
Type error in variable
expression : chr
type : Int -> Char
expected type : Char -> Int
probable fix : use ord instead