[Haskell] ANN: Efficient, dynamically compiled, lazy functional semantics on JVM, having tight integration with the Java language

Luke Evans luke.evans at businessobjects.com
Wed Sep 27 00:22:21 EDT 2006

Greetings denizens of the Haskell mailing list!

Though this is not strictly an announcement about Haskell, it might be of
interest to a number of folk here.

The Research Group here at Business Objects has been beavering away since
1999 on a suite of technologies to allow us to represent certain kinds of
business logic as reusable, composable pieces.  One of the primary
requirements was that a general runtime for such objects be embeddable
within the Java environment (i.e. pure Java).  These pieces of business
logic (which we called "Gems" to give them a nice friendly face) are
declarative 'functional' objects.  So, the side effect of focusing on our
goals was the creation of a high performance, general purpose functional
language and runtime for the Java platform.

Here are a few 'highlights' from our feature list:
- A lazily evaluated, strictly-typed language called CAL, with many
similarities to Haskell
- A compiler capable of generating Java bytecode with efficient schemes
- Many optimisations specific to targeting a dynamic, OO language platform,
such as the JVM
- A graphical language and tooling for interactively developing and testing
Gems (also a good teaching tool)
- Debugging features, with value inspection that doesn't force evaluation
- Eclipse integration (still in progress)
- Metadata on CAL entities
- CALDoc (source embedded documentation)
- Fully multithreaded compiler and runtime
- Control of evaluation from Java, if required (suspension, resumption,
exploring different parts of the result)
- Dynamic compilation - use SDK to create Gems at runtime, or create ad hoc
compositions that might represent specific data flows in an application
- Easy integration to use Java types in CAL and to call regular Java logic
- Exception support
- Localisation and Internationalisation support

Over the next few weeks, we will be publishing more technical information
about our framework (codenamed Quark).  As Business Objects is not a
language or development tools vendor, we are investigating the possibilities
around open sourcing the general language machinery.  As part of figuring
out the best way to approach this, we would be interested in hearing from
anyone with a possible interest in this sort of thing (for teaching,
application development, research, etc.).

While we gather useful collateral, I have made a couple of videos available
that we had to hand and could share quickly.  Some of the content is
designed for those new to the functional paradigm, but the videos do show
quite a range of tool and language features.  To take a look at these, point
your browser at:

In precis, the videos demonstrate the following:

Intro to Gems (parts 1 and 2)
Some of the regular things you expect functional languages to do, created
interactively in our graphical language designer called the Gem Cutter.  We
find this tool is used quite a bit by developers for experimentation and
orientation when reasoning from scratch about problems.  In the demo you can
see real-time typing, Intellicut (our system for proposing legal
compositions), a graphical way to handle partial application and recursion
and a number of other features that may be interesting.

CAL and ICE Shell
This video is a whistlestop tour through some CAL language features as well
as some of the features of the framework (as exposed through the interactive
shell, ICE).  In this demonstration, you can see some aspects of CAL syntax,
the interface to Java types and methods, a quick demo of some
tracing/debugging, a look at CALDoc, records/tuples, refactoring and some
brief discussion on a range of other topics.

I may post other videos over the next few days and weeks, along with papers,
manuals and other artifacts, but I'll spare everyone from further
announcements here lest that bugs people.

[Videos are Quicktime/H264, if you aren't in the habit of watching Quicktime
I believe most browsers will help you to get and install the plug-in.  I can
send people other formats on request, or indeed, at the original resolution
which is easier to see!]

Regards to all,

Luke Evans 
Chief Scientist, VP Research.  Business Objects

More information about the Haskell mailing list