Results 1 -
7 of
7
Functional Reactive Animation
, 1997
"... 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 condition ..."
Abstract
-
Cited by 174 (27 self)
- Add to MetaCart
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 e#ectively 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 di#erential equations.
Lambda in Motion: Controlling Robots with Haskell
, 1999
"... . We present our experiences using a purely functional language, Haskell, in what has been traditionally the realm of low-level languages: robot control. Frob (Functional Robotics) is a domain-specific language embedded in Haskell for robot control. Frob is based on Functional Reactive Programming ( ..."
Abstract
-
Cited by 46 (10 self)
- Add to MetaCart
. We present our experiences using a purely functional language, Haskell, in what has been traditionally the realm of low-level languages: robot control. Frob (Functional Robotics) is a domain-specific language embedded in Haskell for robot control. Frob is based on Functional Reactive Programming (FRP), as initially developed for Fran, a language of reactive animations. Frob presents the interaction between a robot and its stimuli, both onboard sensors and messages from other agents, in a purely functional manner. This serves as a basis for composable high level abstractions supporting complex control regimens in a concise and reusable manner. 1 Introduction Robotics is a an excellent problem domain to demonstrate the power and flexibility of declarative programming languages. Among the more interesting problem areas in this domain are control systems, constraint solving, reactive programming, sensor fusion, and real-time control. We have developed Frob (for Functional Robotics) as ...
An embedded modeling language approach to interactive 3D and multimedia animation
- IEEE Transactions on Software Engineering
, 1999
"... While interactive multimedia animation is a very compelling medium, few people are able to express themselves in it. There are too many low-level details that have to do not with the desired content—e.g., shapes, appearance and behavior—but rather how to get a computer to present the content. For in ..."
Abstract
-
Cited by 25 (5 self)
- Add to MetaCart
While interactive multimedia animation is a very compelling medium, few people are able to express themselves in it. There are too many low-level details that have to do not with the desired content—e.g., shapes, appearance and behavior—but rather how to get a computer to present the content. For instance, behaviors like motion and growth are generally gradual, continuous phenomena. Moreover, many such behaviors go on simultaneously. Computers, on the other hand, cannot directly accommodate either of these basic properties, because they do their work in discrete steps rather than continuously, and they only do one thing at a time. Graphics programmers have to spend much of their effort bridging the gap between what an animation is and how to present it on a computer. We propose that this situation can be improved by a change of language, and present Fran, synthesized by complementing an existing declarative host language, Haskell, with an embedded domain-specific vocabulary for modeled animation. As demonstrated in a collection of examples, the resulting animation descriptions are not only relatively easy to write, but also highly composable.
Declarative Event-Oriented Programming
- IN PROCEEDINGS OF THE 2ND INTERNATIONAL CONFERENCE ON PRINCIPLES AND PRACTICE OF DECLARATIVE PROGRAMMING (PPDP
, 1998
"... Events play an important role in the construction of most software that involves interaction or simulation. Typically, programmers make use of a fixed set of low level events supplied by a window system, possibly augmented with timers and UI components. Event handling generally involves some interpr ..."
Abstract
-
Cited by 5 (2 self)
- Add to MetaCart
Events play an important role in the construction of most software that involves interaction or simulation. Typically, programmers make use of a fixed set of low level events supplied by a window system, possibly augmented with timers and UI components. Event handling generally involves some interpretation of these event occurrences, followed by external actions or modifications to program state. It is possible to extend the event paradigm by using event interpretation to synthesize new kinds of events tailored specifically for a domain or application. In turn, these new events may be used to synthesize yet others, and so on, to an arbitrarily sophisticated degree. This programming paradigm, which we call event-oriented programming, aids in the factoring of programs into understandable and reusable pieces. We propose a declarative approach to event-oriented programming, based on a powerfully expressive event language with a lightweight notation. We illustrate this new approach throug...
From Functional Animation to Sprite-Based Display
- Proceedings of PADL '99. Expanded version: http://research.microsoft. com/scripts/pubDB/pubsasp.asp?Re cordID=190
, 1999
"... . Functional animation encourages a highly modular programming style, by supplying a set of arbitrarily composable functions for building up animations. In contrast, libraries for sprite-based display impose rigid structure, in order to allow acceleration by hardware and low level software. This ..."
Abstract
-
Cited by 3 (2 self)
- Add to MetaCart
. Functional animation encourages a highly modular programming style, by supplying a set of arbitrarily composable functions for building up animations. In contrast, libraries for sprite-based display impose rigid structure, in order to allow acceleration by hardware and low level software. This paper presents a method to bridge the gap between functional specification and stateful, sprite-based presentation of animation. The method's correctness is proved informally by derivation from a simple non-effective specification, exploiting algebraic properties of the animation data types that are made explicit in the functional approach. We have implemented this method in the Fran system, which is freely available. 1 Introduction The functional approach to animation offers considerable flexibility and modularity [1, 7]. Animations are first-class values---elements of a data type consisting of a set of constants and combining operators. The data type allows great flexibility in co...
FunWorlds – Functional Programming and Virtual Worlds
, 2001
"... The Virtual Reality Modeling Language (VRML) is a standard format for describing interactive 3d content, especially on the worldwide web. It combines declarative specifications of static scenes with imperative manipulations of scene graphs to realise dynamic scenes. Functional reactive animation ( ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
The Virtual Reality Modeling Language (VRML) is a standard format for describing interactive 3d content, especially on the worldwide web. It combines declarative specifications of static scenes with imperative manipulations of scene graphs to realise dynamic scenes. Functional reactive animation (Fran) is a domain-specific modeling language for graphical animations and multimedia. Fran has convincingly demonstrated the value of an entirely declarative approach to modeling built around the concepts of time-varying behaviours interacting with discrete events, embedded in a functional host language enriched with domain-specific primitives (graphics in the case of Fran). One of Fran’s ancestors, named ActiveVRML, was put forward as a proposal for VRML 2.0 by Microsoft graphics groups. It failed to gain acceptance for a variety of reasons, but mostly because its concepts remained alien to the community driving the VRML standardisation process. We set out to re-examine the design space for interactive 3d content, taking
A Monad of Imperative Streams
, 1996
"... A new approach is presented for performing concurrent I/O in a functional programming language. A new monad St is introduced which generalizes Haskell's IO monad: A value of type St a represents an imperative program which, at certain times during its execution, will produce a value of type a. In c ..."
Abstract
- Add to MetaCart
A new approach is presented for performing concurrent I/O in a functional programming language. A new monad St is introduced which generalizes Haskell's IO monad: A value of type St a represents an imperative program which, at certain times during its execution, will produce a value of type a. In contrast, a value of type IO a represents an imperative program which, at the end of its execution, will produce a value of type a. Not only may values of type St a be used to represent imperative commands, they also serve to create so-called imperative streams. The computer's physical input devices are represented as primitive streams. Composite streams may be constructed and interleaved in a non-preemptive way using, for instance, the monad's bind operation. By way of a series of example programs, the usage of imperative streams is illustrated. Moreover, an implementation in terms of the IO monad is given that is suitable for executing the example programs on the Gofer interpreter. An exte...

