Welcome to the Daisy QuickStart Guide!

What is Daisy, you ask?

Daisy has a slightly quirky syntax that is not reminiscent of any mainstream programming language. It's simple and regular, but different. Once you've got a handle on the syntax, Daisy is an easy language to learn. It has a few familiar data types, like numbers and strings, and has lists to glue things together. Perhaps not so familiar, higher-order functions and streams, partially supported or confined to certain areas (e.g. I/O) in other languages, appear frequently in Daisy programs.

Daisy is easily learned, but not easily mastered. Its functional style and demand-driven semantics present a comprehension curve that confronts those from an imperative programming background head-on. You have to read and write a few Daisy programs before an epiphany happens and you figure out how to swim with the stream and not against it (pun intended). For the intrepid few who hang in there, Daisy will eventually delight you with a style of programming that is refreshingly and radically different from mainstream conventional programming.

This manual provides a brief introduction to the Daisy language and includes a through reference to Daisy syntax, primitives and error messages, as well as operation of the interpreter and compiler. Using this manual, an experienced programmer in other languages should be able to write simple Daisy programs fairly quickly.

A Note on Implementations

Daisy is an evolving language. Features described herein are subject to change between language versions and releases. We use a version.release convention for identifying implementations; Daisy source should be compatible between releases, but not necessarily versions. By compatible we mean forward compatible, and backward compatible provided no new features are used. In other words, a Daisy 4.0 program will run on 4.1, and a 4.1 program will run on 4.0 provided that it does not make use of any new features in 4.1; a 5.0 program won't necessarily run on 4.0, and vice versa.

Daisy is implemented on a virtual machine/embedded-OS combination called DSI. It is not really necessary to know anything about DSI to use Daisy, except for interpreting errons that bubble up from the run-time system. These are summarized in the Errons appendix. It used to be that Daisy and DSI were released under the same version, but this is no longer the case. However, since some Daisy primitives rely on the behavior of DSI subsystems, the version/release numbers of Daisy get bumped whenever modifications to DSI cause version incompatibilities in Daisy. For further reading about either Daisy or DSI please see the abbreviated bibliography on the Daisy/DSI project.


I would like to hear any constructive comments regarding the readability of this manual, errors or inconsistencies with respect to the named version, bug reports, or any ideas about the future development of Daisy. Please contact me electronically at:

Or by snail mail:

Eric Jeschke
Assistant Professor of Computer Science
The University of Hawaii at Hilo
200 W. Kawili St.
Hilo, HI 96720
Eric Jeschke
May 17, 1997