CAL
From JVMLanguages
CAL is a lazy strongly-typed functional programming language for the JVM. It is developed by Business Objects as part of a broader system called the Quark Framework, and is released as open source under the BSD license.[1] (http://labs.businessobjects.com/cal/)
The basic syntax and semantics of CAL are similar to Haskell and it is straightforward to port Haskell code to CAL. In addition, CAL includes features to interoperate with Java. For example, CAL supports concurrent creation, compilation, and execution of CAL entities, entirely under the control of Java e.g. as a kind of functional language meta-programming.
There is a visual programming language for graphically creating CAL functions called the Gem Cutter.[2] (http://resources.businessobjects.com/labs/cal/gemcutter-techpaper.pdf) This is an example of the sort of application that can be created with CAL and the Quark Framework: one that combines polished UI, reuses Java libraries, and exposes functional logic in an accessible form.
There is also a CAL Eclipse Plug-in released as open source under the EPL license.[3] (http://resources.businessobjects.com/labs/cal/cal_eclipse_update/site.xml)
CAL implements a variety of unboxing transformations, compiling tail calls as loops, etc. to achieve respectable performance on the JVM. It is one of the languages benchmarked on the Computer Language Benchmarks Game site. [4] (http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=all)
Under the hood, the CAL compiler can generate either bytecodes directly or reasonably readable Java source files that are then compiled with javac.
External Links
- CAL Home Page (http://labs.businessobjects.com/cal/)
- Downloads (http://labs.businessobjects.com/cal/#Downloads)
- a tutorial module introducing CAL language features (http://resources.businessobjects.com/labs/cal/tutorial_calintro.html)
- CAL Eclipse plug-in update site (http://resources.businessobjects.com/labs/cal/cal_eclipse_update/site.xml)
- Technical report - "The Gem Cutter - A Graphical Tool for Creating Functions in the Strongly-typed Lazy Functional Language CAL" (http://resources.businessobjects.com/labs/cal/gemcutter-techpaper.pdf)
- CAL discussion forum on Google Groups (http://groups.google.com/group/cal_language)
- Wikipedia article on Quark Framework and CAL (http://en.wikipedia.org/wiki/Quark_Framework)

