Ermine Scala

             ;"""""""""";          _`;; ""  «@`---v
            ; :::::  ::  "'      _` ;;  "    _.../
           ;"     ;;  ;;;  '",-`::    ;;,'""""
          ;"          ;;;;.  ;;  ;;;  ::`    ____
         ,/ / ;;  ;;;______;;;  ;;; ::,`    / __/_____ _  ( )__  __
         /;; _;;   ;;;       ;       ;     / _//`__/  ' \/ /`_ \/ -)
         | :/ / ,;'           ;_ "")/     /___/_/ /_/_/_/_/_//_/\__/
         ; ; / /"""=            \;;\\""=
      ;"""';\::""""""=            \\"""=

Ermine is a programming language, derived from Haskell, executing on the JVM. It was originally designed for creating interesting reports from relational data. It's based on the idea that advanced type systems can be used to guide users towards the features of software they're interested in for many different contexts. Its key enhancement over Haskell is its relational rowtype system.

This distribution includes several components:

  • A type checker and interpreter for Ermine, built in Scala,
  • An Ermine standard library,
  • A relational database model and SQL generator, with API and extra tools in Ermine,
  • An API for creating visual reports from relational data, with charts and graphs, for both authoring in Ermine and output engines in Scala,
  • A collection of JavaFX utilities,
  • An experimental type-aware text editor for Ermine source code.

The output engines that display and export reports are part of a separate distribution, ermine-writers. Unlike this distribution, that project has more complex licensing considerations, so be sure to check out its before doing anything important with it.


Contributions and bug reports are welcome! You can submit both through Bitbucket. We provide build instructions on the wiki.

We have two main development branches, not just one: scala-2.9.2 and default. Check the wiki for details, and advice on which to base your contribution on.

Also, this project is developed in sync with Ermine Writers. Any changes to this one might require coordinated changes to that one.

Talk to us

Ermine is a big project, and the developers have a wealth of knowledge about how various parts of it work. Join #ermine on to chat with the developers. Leave us a bug report if you have a more formal or detailed question.


Thank you to all contributors to Ermine Scala, most of whom are listed in in the distribution. Further details of their contributions are listed on the wiki.

The Ermine Scala project was started and continues to be developed at McGraw Hill Financial.


Basically, Ermine Scala is licensed under the 2-clause BSD license, a free and open source license; see COPYING. Full details of the licensing of this distribution are in