Functional reactive animation

Fran (Functional Reactive Animation) is a collection of data types and functions for composing richly interactive, multimedia animations. The key ideas in Fran are its notions of behaviors and events. Behaviors are time-varying, reactive values, while events are sets of arbitrarily complex conditions, carrying possibly rich information. Most traditional values can be treated as behaviors, and when images are thus treated, they become animations. Although these notions are captured as data types rather than a programming language, we provide them with a denotational semantics, including a proper treatment of real time, to guide reasoning and implementation. A method to effectively and efficiently perform event detection using interval analysis is also described, which relies on the partial information structure on the domain of event times. Fran has been implemented in Hugs, yielding surprisingly good performance for an interpreter-based system. Several examples are given, including the ability to describe physical phenomena involving gravity, springs, velocity, acceleration, etc. using ordinary differential equations.

[1]  Dominique Fober,et al.  Lambda Calculus and Music Calculi , 1994, ICMC.

[2]  Philip Wadler,et al.  Comprehending monads , 1990, Mathematical Structures in Computer Science.

[3]  Paul Hudak,et al.  Haskore music notation – An algebra of music – , 1996, Journal of Functional Programming.

[4]  Joel F. Bartlett,et al.  Don’t Fidget with Widgets, Draw! , 1999 .

[5]  Kavi Arya A Functional Approach to Animation , 1986, Comput. Graph. Forum.

[6]  Paul Le Guernic,et al.  SIGNAL: A declarative language for synchronous programming of real-time systems , 1987, FPCA.

[7]  Peter Henderson Functional geometry , 1982, LFP '82.

[8]  Roger B. Dannenberg The Canon Score Language , 1989 .

[9]  John M. Snyder,et al.  Interval analysis for computer graphics , 1992, SIGGRAPH.

[10]  Simon L. Peyton Jones,et al.  Picture: A Simple Structured Graphics Model , 1995, Functional Programming.

[11]  John H. Reppy,et al.  CML: A higher concurrent language , 1991, PLDI '91.

[12]  Ralf Hinze,et al.  Haskell 98 — A Non−strict‚ Purely Functional Language , 1999 .

[13]  Ricky Yeung,et al.  TBAG: a high level framework for interactive, animated 3D graphics applications , 1994, SIGGRAPH.

[14]  Simon L. Peyton Jones,et al.  Concurrent Haskell , 1996, POPL '96.

[15]  Nicolas Halbwachs,et al.  LUSTRE: A declarative language for programming synchronous systems* , 1987 .

[16]  Ricky Yeung,et al.  Functional 3D Graphics in C++ - with an Object-Oriented, Multiple Dispatching Implementation , 1994, Workshop on Object-Oriented Graphics.

[17]  Nicolas Halbwachs,et al.  LUSTRE: a declarative language for real-time programming , 1987, POPL '87.

[18]  Kavi Arya,et al.  A functional animation starter-kit , 1994, Journal of Functional Programming.

[19]  F. A. Seiler,et al.  Numerical Recipes in C: The Art of Scientific Computing , 1989 .

[20]  William W. Wadge,et al.  Lucid, the dataflow programming language , 1985 .

[21]  M SnyderJohn Interval analysis for computer graphics , 1992 .

[22]  John H. Reppy,et al.  CML: A Higher-Order Concurrent Language , 1991, PLDI.