ANNOUNCE: Helium, for Learning Haskell, version 1.1

Arjan van IJzendoorn
Tue, 11 Mar 2003 11:30:47 +0100

Dear all,

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-
  the-box experience.

- 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
  type :?

- 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

Have fun!

  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