CUFP 2006 Abstracts

Haskell and the Linspire Toolchain
Speaker: Clifford Beshers
Linspire, Inc. has used functional programming since its inception in 2001, beginning with extensive use of O'Caml, with a steady shift to Haskell as its implementations and libraries have matured. Hardware detection, software packaging and CGI web page generation are all areas where we have used functional programming extensively.

Haskell's feature set lets us replace much of our use of little languages (e.g., bash or awk) and two-level languages (C or C++ bound to an interpreted language), allowing for faster development, better code sharing and ultimately faster implementations. Above all, we value static type checking for minimizing runtime errors in applications that run in unknown environments and for wrapping legacy programs in strongly typed functions to ensure that we pass valid arguments.

Building a Startup with Standard ML
Speaker: Steve Sims
Reactive Systems, Inc. (RSI) was founded in 1999 with the goal of developing and marketing tools that help engineers improve software quality while decreasing software development costs. RSI launched its Reactis testing and validation package in 2002 and has subsequently built a customer base that includes over 30 major automotive and aerospace companies located around the world. In this presentation, we discuss how the use of Standard ML (SML) has proved to be a key factor in the success of RSI. The use of SML as the primary implementation language for Reactis has yielded substantial productivity improvements that enabled a small team to develop, deploy, enhance and maintain a very complex product. In addition to its use in Reactis, RSI leverages SML to build the company intranet (which automates a number of important business processes), to build its public website, and to implement an extensive automated regression test suite for Reactis. We will also describe some more intangible benefits such as the role that pervasive SML use has played in attracting and retaining highly productive employees.

Scheme in Space
Speaker: Richard Cleis
The Starfire Optical Range is an Air Force Research Laboratory engaged in Atmospheric Research near Albuquerque, New Mexico. Since the late 1980's, nearly all systems have been controlled by C programs, an acceptable approach until the increased complexity and variety of experiments began to overwhelm the programmers. In early 2003, we collected an image of the Space Shuttle Columbia as it passed through New Mexico on its way to landing in Florida. The flight turned out to be Columbia's last, and the image played a significant role in the aftermath. However, new software for such a special case needed to be developed (mostly overnight) yet was not completed in time. This shortcoming severely limited the performance of the system that tracked the Shuttle and collected the images. A search for a better way than programming in C was immediately sought, eventually leading to Scheme.

In this presentation we use the Shuttle incident to show how Scheme could have significantly improved our development productivity and ultimately increased systems performance. We also describe the technical background of precision telescope systems, the set-up of our new Scheme-enhanced software, emerging programming techniques, and the social obstacles that affect the implementation of languages which aren't C++ or Java.

Caml Trader: Adventures of a Functional Programmer on Wall Street
Speaker: Yaron Minsky
Jane Street Capital is a proprietary trading company in Manhattan that has recently shifted to using OCaml as its primary development language, both for quantitative research and for building of high-performance trading systems and infrastructure. This talk will discuss how the initial decision was made and the resulting changes to our development process and our business.

Why Functional Programming Matters to Credit Suisse
Speaker: Howard Mansell
We will give a brief overview of the activities of the quantitative modeling group at Credit Suisse (an investment bank), and the kinds of systems we build. A significant number of components of our system can be implemented rather naturally using a pure functional language. In our presentation, we will show why this is the case, and discuss the pros and cons of using Haskell for this task - focusing more on a system's than a language point of view.

Analysis of Microprocessor Components with a Functional Language-based Formal Verification Toolbox
Speaker: Roope Kaivola
Formal verification of microprocessor components has been pursued in various forms for roughly a decade now in Intel. One of the most succesful approaches in the area is based on a verification framework which combines a strongly typed lazy functional programming language reFLect with built-in symbolic circuit simulation and symbolic evaluation facilities for Booleans. Both the specifications against which circuit behaviours are compared, and the routines performing the analysis are coded in reFLect, and the verification effort typically involves significant software engineering issues. I will discuss the verification of floating-point arithmetic units in recent Intel processors against IEEE floating-point standard in this framework, concentrating particularly in the coding aspects related to symbolic evaluation.

Bringing Declarative Programming into a Commercial Tool for Developing Integrated Circuits
Speaker: Rishiyur Nikhil
Developing a modern integrated circuit (ASIC or FPGA) is an enormously expensive process involving specification, modeling (to choose and fix the architecture), design (to describe what will become silicon) and verification (to ensure that it meets the specs), all before actually committing anything to silicon (where the cost of a failure can be tens of millions of dollars). Bluespec, Inc. is a three year-old company that provides language facilities, methodologies, and tools for this purpose, within the framework of the IEEE standard languages SystemVerilog and SystemC, but borrowing ideas heavily from Term Rewriting Systems and functional programming languages like Haskell. In this talk, after a brief technical overview to set the context, we will describe our tactics and strategies, and the challenges we face, in introducing declarative programming ideas into this field, both externally (convincing customers about the value of these ideas) and internally (using Haskell for our tool implementation).

Betting on Functional Programming and Winning
Speaker: Erik Stenman
In Sweden, as in many countries, consumers are still afraid to use credit cards on-line. This is not only a question of security, but mainly a social phenomenon, a question of trust. How will they know that they get what they pay for? Also, most consumers, at least when it comes to buying clothes, want to see, and perhaps even try, the merchandise before they pay for it. But for this to be possible over the Internet the on-line shop has to trust the consumer to pay after the delivery.

Here we have a classic security problem, how do we get two parties that don't know each other to trust each other? There is of course a simple classical solution to the problem: introduce a mediator that both parties trust. This can still be a problem, since it is not easy to find a mediator that two random parties both trusts. As we shall see, the problem is actually a bit easier, since with the right solution, we only need to establish trust in one direction.

This is where Kreditor comes into the picture. Kreditor brings old and proven business methods like invoicing and factoring to the new Internet era. With Kreditor's services the consumer can get the merchandise first and pay later, while the on-line shop can put its trust to Kreditor knowing that it will get payed. This way the customer takes no risk, since he only pays if he is satisfied with the merchandise.

Providing timely credit services on-line requires a secure, robust, error free, high availability system. Kreditor's solution is fascinating in that it is a financial application completely written in Erlang.

In this talk I will present what it takes to implement such a system, and the benefits and problems of using Erlang, but mainly I will talk about how and why Erlang was chosen for the task.

August 15th 2006