After yesterday's post about the new embedded compiler and libraries in the forthcoming Version 1.1 of Haskell for Mac, this post is about the second major improvement, namely identifier completion.

Haskell for Mac keeps track of all identifiers (that is names of functions, types, data constructors, and so forth) that are defined based on the currently edited module — most of those will be from imported modules including the Haskell standard Prelude. It also keeps track of the identifiers used in the currently edited module, such as local names.

In the new version, this information can save you same typing (especially with those pesky expressiveAndVeryLongIdentifiers). The ESC key presents you with a popup box of the current set of identifiers starting with the current prefix.

In addition to plain identifiers, this also works with qualified identifiers (such as, for example, Control.Monad.unless), which allows you to easily browse the identifiers defined in an imported module — for example, by typing Control.Monad. and then ESC, you get all identifiers exported from the module Control.Monad.