Saturday, September 30, 2006

CAL User's Guide posted

I have just posted the CAL User's Guide here.

The CAL User's Guide is a general guide to the CAL language. It is designed to be easy to read, even for developers new to the functional paradigm, and has the following sections:
1. Getting Started with CAL
2. Language Reference
3. Standard Library Reference
4. Appendices (conventions, style guides, etc.)

This material is provided for the continued purpose of seeding some information on the Quark Framework for Java and generating feedback and discussion to help us in our planning regarding the future of this technology. So, once again, we would be delighted to receive feedback, questions or comments.

Thursday, September 28, 2006

CAL for Haskell Programmers

People familiar with Haskell will be curious as to how CAL differs from the Haskell language, and what motivates these differences. We have now posted a document addressing this here.

Bonus Screenshot1

This image shows the definition of the standard function 'map' expressed in the graphical language of the Gem Cutter.

Of particular note is the white Gem on the Table Top with the name "demoMap". This is an Emitter of the target Gem (i.e. the result) and represents a recursive call. By default, an Emitter has no local arguments and so it's output type is the same as the value passed into its corresponding Collector. However, one is able to 'retarget' arguments from definition upstream of a Collector to the Collector itself, whereby any Emitters for that Collector will appear with 'local' arguments. If that sounds complicated, it really takes longer to say it than it does to grok when you are in front of the Gem Cutter :-)

Screenshots posted

I have posted some screenshots to the .mac site, to cater for those who do not have QuickTime 7, or who are experiencing service problems or long download times with the videos.

Although the caption size is limited, I have tried to highlight what is going on in each image.

To get to these (and the videos) use the link in the right margin, or click here

New video

While we are in the process of preparing somewhat more technical material to share, I have also published one more video to the location currently hosting our demonstration videos

[If anyone is curious, after some experimentation this was the easiest, fastest way to host some streaming videos of reasonable quality]

The new video is a tour of some developer tool features, including:
  • Searching
  • Metadata browsing and editing
  • CALDoc tags
  • CALDoc HTML generation
  • CALDoc browsing, with dynamic HTML navigation and search
  • Various refactorings: rename, add type declaration, organise imports
  • JAR file export

What is all this about?

Business Objects wishes to establish dialogue with researchers, teaching staff and the software community at large regarding a technology, code-named Quark, that has been developed in its Research Group since 1999. To this effect, announcements have been made on some special interest group mailing lists, and some early information about Quark has been made available. Further information is being prepared, and we are hoping to make the actual software available soon, under an 'early access' style license (no support). The purpose of such consultation is to establish whether Quark is of sufficient interest to various parties to warrant its proper release as some form of 'software libre', and/or whether there is interest in collaboration on further development.

Quark is a framework for the definition and execution of functional components on the Java platform. The motivation for this was the ability to create certain kinds of business logic as reusable, dynamically composable pieces. These discrete units of composable logic are called "Gems", and these can be created with a number of developer tools, or generated programmatically under the control of a Java application. Gems compile on-the-fly to very efficient Java bytecode, and can be used in a regular Java program with considerable flexibility. The side-effect of focusing on our specific goals then, has been the creation of a high-performance, general purpose functional language, having tight integration with the Java platform and language.

As we are at the very beginning of the rollout of information to the community, there may be frequent further announcements. To avoid too many update posts to mailing lists, and to encourage some more specific and lengthy discussion on Quark, this blog has been set up. This might be a temporary home for such discussion, but should allow an exchange of information and ideas to begin quickly.