What's new

There are several major extensions to Vital since the last release (May 04):
Animation
The Pic datatype (of pictures) now includes constructors that allow animated pictures:
  • the Animation constructor takes a picture-valued function on the integers and displays a stateless animation (for example, a scrolling waveform);
  • the Interaction constructor takes a function describing a finite-state machine and displays a statefull animation (for example, an arcade game).
Type classes
A (simplified) version of the Haskell type class mechanism is now incorporated. In addition to supporting (most of) the conventional uses of type classes, it allows (via the Edit type class) a default style to be be associated with each datatype, thus avoiding the need for the user to associate a style with each expression explicitly.
Display and direct manipulation of ADTs
A new, wired-in type class, Edit has been introduced that supports the direct manipulation of ADT values. In particular, it allows the user to define an association between mouse gestures (menu selection, etc) and an arbitrary set of operations to be performed on an ADT. These operations operate not directly on the value itself but rather on the Haskell source code that defines the value (thus ensuring that any changes made are persistent). This mechanism supplements and generalises the earlier form of Copy/Paste direct manipulation that applied only to values of concrete datatypes.
Midi music
Facilities have been added to allow Midi sequences to be composed and to be played.
Actions
A simplied form of actions (ie, values of type IO ()) has been added to allow events to be trigged by button-presses or by timed delays. In particular, this allows for files to be output and for the playing of Midi sequences to be initiated.
There are also a number of minor extensions and revisions to the system (as listed in the version history), and also a collection of interactive documents illustrating the new features.
Feedback on any aspect of Vital is welcome. Updated Jan 05