Contents - Cultural View
Contents - Cultural View
Contents - Cultural View
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Quark Framework 257<br />
Quark Framework<br />
Paradigm functional, non-strict, modular<br />
Appeared in 2004<br />
Designed by Luke Evans, Bo Ilic (Business<br />
Objects)<br />
Typing discipline static, strong, inferred<br />
Major implementations Open Quark Framework for Java [1]<br />
Dialects --<br />
Influenced by Haskell, Clean, Java<br />
Influenced --<br />
The Quark Framework (Open Quark) consists of a non-strict functional language and runtime for the Java<br />
platform. The framework allows the compilation and evaluation of functional logic on the Java Virtual Machine<br />
(JVM), directly or under the control of a regular Java application. The native language (syntax) for the Quark<br />
Framework is called CAL. A full range of Java APIs provides the means to invoke the CAL compiler, manipulate<br />
workspaces of modules, add metadata and evaluate functional logic. Functional logic is usually dynamically<br />
compiled to Java bytecodes and executed directly on the JVM (with some small kernel logic controlling the normal<br />
evaluation order). However, an interpreter (G-machine) is also available.<br />
Motivation, History and Concept<br />
CAL, and the associated tools and APIs forming the Quark Framework, was conceived in 1998 within Seagate<br />
Software (later Crystal Decisions, now Business Objects) as a way to enable a common framework for sharing<br />
business logic across business intelligence products. A framework was desired that would allow data behaviour to be<br />
captured, at all levels of abstraction, and for these components to be composable into the actual data flows that<br />
individual products required. In general terms, such a system had to provide a way to express data behaviour<br />
declaratively, with universal composition and typing laws. In essence, this places the problem firmly in the domain<br />
of functional languages, and the desire to allow machine compositions of functions without incurring increasing<br />
efficiency penalties strongly suggested a non-strict evaluation semantic.<br />
As well as the operational requirements, it was envisaged that future application logic would likely be written for a<br />
dynamic platform (such as Java or .Net), and therefore it was determined that the Quark Framework should be native<br />
to Java (initially) with considerable emphasis on performance and interoperability with application logic written on<br />
that platform. In 1999, work began in Crystal's Research Group on an implementation of this framework. Many of<br />
the original insights into lazy functional systems were drawn from implementations of Haskell. Early on, Haskell<br />
(HUGS, GHC) was even considered as a starting point for the implementation itself, but a number of requirements<br />
made this impractical, so it was decided to let the project emerge and evolve freely following its own design criteria.<br />
For the first few years of development, the CAL source language itself was not a primary motivator, but the<br />
operational semantics were of primary concern. At this time, CAL was merely a convenient script for expressing<br />
functions rather than composing them programmatically through Java APIs, or using a graphical language native to a<br />
tool called the Gem Cutter, which began to be implemented in mid-2000 as a way to author systems of functions that