Version 1.8.2

21 December 2020

This version introduces support for Dark Mode and macOS Big Sur. It also contains a number of bug fixes.

To celebrate Dark Mode support, you can now download four different light and dark Haskell for Mac wallpapers from

Are you enjoying Haskell for Mac? If you do and you have got a moment to spare, we would very much appreciate an App Store rating or even review. They help a lot!

If you have got any suggestions for improvement, please contact us via the Send Feedback” menu item in the Help” menu. Thank you!

Version 1.7.0

31 October 2019

With this update, information popovers for identifiers (such as, function, type, and class names) contain the Haddock documentation attached to the definition of the respective function, type, class, or similar. Haskell for Mac now also includes a raw Cabal file editor, which can be opened from the sheet containing the package information. The raw Cabal editor is also automatically invoked if Haskell for Mac is unable to load a project due to a problem with its Cabal file.

In addition, the app now includes GHC 8.6.4 and the LTS package set 13.14.

Version 1.6.1

22 December 2018

This is a bug fix release.

Version 1.6.0

14 May 2018

The most substantial improvements in this version are in project management. Projects can now have multiple executable targets and, in addition, a library target. On project creation a new dialog provides a choice of starting with a library or an executable target.

In addition, new projects can be created by importing an existing Cabal package. This feature comes with the caveat that not all functionality of a given Cabal package may be supported by Haskell for Mac yet. Nevertheless, it simplifies working with existing packages and also collaboration in a team, where not all team members use Haskell for Mac, as the imported package can now be maintained in version control without the .hsproj package wrapper around it.

Warning: To enable the above functionality, the Haskell for Mac project format changed slightly. Old versions of Haskell for Mac will not be able to open projects created with Version 1.6.0.

On the other side of the spectrum, quick experiments can now be performed in draft projects that don’t need to be saved to a permanent location. (They will still, of course, be autosaved and persist across relaunching the app until you explicitly discard them. Moreover, you can always explicitly save them if you decide to keep them after all.)

In addition to these main changes, we bring you a few additional improvements:

Last but not least, some more bugs got squashed:

Version 1.5.1

21 August 2017

We have been diligently hunting down some bugs:

Version 1.5.0

4 July 2017

This release brings the eagerly awaited upgrade to GHC 8 (specifically, GHC 8.0.2). With it, Haskell for Mac acquires an entire range of new Haskell language extensions with the following four highlights:

(1) TypeInType (kinds support the full range of type features, including explicit quantification over kind variables, higher-rank kinds, and the use of type synonyms and families in kinds),

(2) injective type families (type families can be annotated with injectivity information),

(3) applicative do notation (alternative translation of the do notation using Applicative, instead of Monad operations, where possible), and

(4) duplicate record fields (support for record types with identically-named fields).

Moreover, I (and three finger tap, if enabled) now displays local type information in the module editor. Hence, the type for any proper subexpression in a function definition can now be shown, including the types of local variable and function definitions. In the presence of type errors, partial type information is provided. This significantly simplifies understanding and writing code.

Additional features include the ability to omit the let keyword in variable and function definitions in playgrounds, an upgrade to LTS Haskell 8.9, and the new Paraíso Dark editor theme (contributed by Simon Holywell).

This version requires macOS 10.11 (El Capitan) upwards.

Version 1.4.0

21 March 2017

This exciting new release finally brings a GUI for package management. To install extra packages, you still need to download the Haskell for Mac command line tools (HaskellCLI), but now you don’t need to resort to the command line anymore to use those tools. Once you install the HaskellCLI, Haskell for Mac gains a new Target menu. This new menu provides 

(1) a GUI package manager including a list of all packages available from LTS Haskell as well as

(2) the option to run your own command line Haskell programs in a Terminal window right from within Haskell for Mac.

In addition, you can now install the HaskellCLI without any interference with other Haskell systems that you may already have installed on your Mac.

Additional perks in this version are better auto-completion results in modules with code errors, an upgrade to LTS Haskell 6.29, the option to perform type-checking only —without code execution— in playgrounds, and an improved ability to interrupt long running computations.

Haskell for Mac v1.4.0 still builds on GHC 7.10.3 and has not adopted GHC 8 yet. This is as the initial GHC 8 releases had serious bugs on macOS, and LTS Haskell support for GHC 8.0.2 was made available too late in the release process for v1.4.0. Nevertheless, we are working on bringing you GHC 8 support as soon as possible. Moreover, we squashed an annoying bug that could lead to a temporary freezing of the UI or even crashes on switching between files or closing a window.

This version requires macOS 10.11 (El Capitan) upwards.

Version 1.3.2

23 December 2016

This release features four bug fixes that are small, but impact usability quite strongly:

(1) During auto-completion, hitting the spacebar cancels completion (and simply adds a space character after the text typed so far). This makes entering newly defined identifiers much more convenient.

(2) When entering a qualified name, on typing '.' after the module prefix, auto-completion displays all identifier exported by that module.

(3) Documentation links in info popovers work more reliably for names defined in hidden modules and re-exported by another module.

(4) It is no longer necessary to import Graphics.SpriteKit to display images in playgrounds.

This really is the last version that supports macOS 10.10 (Yosemite).

Version 1.3.1

12 December 2016

Here comes more functional programming goodness! In addition to the obligatory bug fixes, this version includes two main improvements, and a few smaller ones.

Firstly, Haskell for Mac now supports auto-completion of identifiers. Identifiers are completed as you type, taking into account all modules you have imported. As of macOS Sierra, due to a change in macOS, the ESC key on its own doesn't trigger identifier completion anymore. You need to press -ESC (alt/option with ESC). Luckily, this is much less of an issue now with auto-completion. (Auto-completion can be enabled and disabled in the text editing preferences.)

Secondly, the information popover (triggered by I or a three finger tap) for function, constructor, and type names now has more details. In particular, it now includes a link to the relevant online documentation. Just click on the name of the module in which the identifier is defined and you will be taken to the relevant portion of the online documentation. This makes it quick and easy to look up the documentation for the libraries that you use.

In playgrounds, you can now preview SVG documents. In fact, you can preview any data type for which you provide an instance of the new Presentable class. For example, if you have got a function that renders a tree datatype in HTML or animates it with SpriteKit, provide a Presentable instance for that tree datatype and you will see the rich presentation, instead of just a text string, in the playground. You can import Presentable from IDE.HaskellForMac.Playground. It only has one method: present :: a -> IO Presentation. You implement it for a new data type by converting the new data type to a type that is already Presentable, such as Blaze.Html or Graphics.SpriteKit.Node, and then, recursively call present on that value.

Finally, by popular request, playgrounds now support GHCi-style :t, :k, and :i commands.

This is the last version that supports macOS 10.10 (Yosemite).

Version 1.3.0

12 September 2016

This version includes a major update to the Haskell SpriteKit binding. In particular, the binding now includes support for all core aspects of the physics engine, including collisions and contact handlers. (Fields and joints are not supported yet.)

Haskell for Mac now automatically recognises extra packages that have been installed with the cabal tool from the Haskell CLI. Moreover, this version includes a few minor changes, such as the option to create a new folder during data bucket selection, as well as updates for macOS 10.12 (Sierra).

Upgrade to the internals: we now include over 200 packages from LTS Haskell 5.18.

Version 1.2.1

9 May 2016

The most exciting new feature in this version is support for preview of HTML documents in playgrounds and fully fledged web views including JavaScript support in playground popovers for HTML documents. The currently supported HTML packages are blaze-html, xhtml & lucid. To see this new functionality in action, see the new ”HTML” sample project.

We introduce data buckets as dedicated locations for file I/O by playground code. This gives playground code controlled access to data outside of the project document and provides support for writing files. Each document has its own data bucket, which can be selected by a new popup button in the toolbar of a project window.

Upgrade to the internals: we now embed version 7.10.3 of the Glasgow Haskell Compiler (GHC) and over 200 packages from LTS 5.9. Hence, some of your Haskell code may need to be adapted to the upgraded library interfaces. Haskell for Mac will prompt you to update old projects.

The ”Edit” menu includes a ”Complete” menu item for identifier completion, which facilitates using a keyboard shortcut other than ESC for identifier completion. Moreover, the package database can now easily be rest in the ”Command Line” tab of the application preferences.

Code pasted (for example, from PDF documents) is now stripped of invisible control characters and Unicode is rendered correctly in the playground console.

Command line tools now include the lexer generator Alex, the parser generator Happy, and the pre-processor cpphs.

Version 1.2.1 also includes a range of bug fixes concerning file creation, playground evaluation, layout, adding external files, Unicode handling & duplicate entries during identifier completion.

Version 1.1.0

25 January 2016

Major upgrade to the internals: we now embed version 7.10.2 of the Glasgow Haskell Compiler (GHC), including support for partial type signatures, and over 200 packages from LTS 3.16. Hence, some of your Haskell code may need to be adapted to the upgraded library interfaces.

A major adition to code editing is support for identifier completion. Whenever you type the prefix of an identifier, you can use the ESC key to get a list of imported and locally defined names with that prefix. This also works for qualified names (i.e., identifiers prefixed by a module name).

Optional Haskell command line tools (including ghc, ghci & cabal) may be installed by way of a separate download accessible from the app preferences. The cabal tool enables the installation of extra packages from LTS Haskell 3.16 as well as your own local packages. You can also use these tools to compile your Haskel projects.

Haskell for Mac automatically generates Cabal and Stack configuration files for all Haskell for Mac projects. This simplifies building binaries, including with other Haskell distributions. It also facilitates collaboration.

Line wrapping is now optional (see Text Editing preferences) and playground results have got a new context menu (CTRL-click or right click) to display or copy results and types of results.

The application sandbox now permits outgoing network connections. Hence, you can use networking libraries, such as wreq, in the playground to experiment with client code.

The SpriteKit API now supports obtaining the frame and to calculateAccumulatedFrame of SpriteKit nodes. Moreover, rgbaColor is now a total function.

Version 1.1.0 also includes a fair share of bug fixes concerning features, such as window configuration, layout, adding external files, error popovers & project navigation.