Embedding Dynamic Dataflow in a Call-by-Value Language

  • Gregory H. Cooper
  • Shriram Krishnamurthi
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3924)


This paper describes FrTime, an extension of Scheme designed for writing interactive applications. Inspired by functional reactive programming, the language embeds dynamic dataflow within a call-by-value functional language. The essence of the embedding is to make program expressions evaluate to nodes in a dataflow graph. This strategy eases importation of legacy code and permits incremental program construction. We have integrated FrTime with the DrScheme programming environment and have used it to develop several novel applications. We describe FrTime’s design and implementation in detail and present a formal semantics of its evaluation model.


Priority Queue Functional Programming Legacy Code Event Stream Functional Language 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


  1. 1.
    Acar, U.A., Blelloch, G.E., Harper, R.: Adaptive functional programming. In: ACM SIGPLAN Symposium on Principles of Programming Languages, pp. 247–259 (2002)Google Scholar
  2. 2.
    Benveniste, A., Guernic, P.L., Jacquemot, C.: Synchronous programming with events and relations: the signal language and its semantics. Science of Computer Programming 16(2), 103–149 (1991)MathSciNetCrossRefzbMATHGoogle Scholar
  3. 3.
    Berry, G.: The Foundations of Esterel. MIT Press, Cambridge (1998)Google Scholar
  4. 4.
    Caspi, P., Pilaud, D., Halbwachs, N., Plaice, J.A.: LUSTRE: A declarative language for programming synchronous systems. In: ACM SIGPLAN Symposium on Principles of Programming Languages, pp. 178–188 (1987)Google Scholar
  5. 5.
    Courtney, A.: Frappé: Functional reactive programming in Java. In: Practical Aspects of Declarative Languages, pp. 29–44 (2001)Google Scholar
  6. 6.
    Elliott, C.: Functional implementations of continuous modeled animation. In: Programming Languages: Implementations, Logics, and Programs, pp. 284–299 (1998)Google Scholar
  7. 7.
    Elliott, C., Hudak, P.: Functional reactive animation. In: ACM SIGPLAN International Conference on Functional Programming, pp. 263–277 (1997)Google Scholar
  8. 8.
    Felleisen, M., Hieb, R.: The revised report on the syntactic theories of sequential control and state. Theoretical Computer Science 102(2), 235–271 (1992)MathSciNetCrossRefzbMATHGoogle Scholar
  9. 9.
    Findler, R.B., Clements, J., Flanagan, C., Flatt, M., Krishnamurthi, S., Steckler, P., Felleisen, M.: DrScheme: A programming environment for Scheme. Journal of Functional Programming 12(2), 159–182 (2002)CrossRefzbMATHGoogle Scholar
  10. 10.
    Findler, R.B., Flatt, M.: Slideshow: Functional presentations. In: ACM SIGPLAN International Conference on Functional Programming, pp. 224–235 (2004)Google Scholar
  11. 11.
    Flatt, M., Findler, R.B., Krishnamurthi, S., Felleisen, M.: Programming languages as operating systems (or, Revenge of the Son of the LispMachine). In: ACMSIGPLAN International Conference on Functional Programming, pp. 138–147 (1999)Google Scholar
  12. 12.
    Hamon, G., Pouzet, M.: Modular Resetting of Synchronous Data-flow Programs. In: ACM SIGPLAN International Conference on Principles and Practice of Declarative Programming, pp. 289–300 (2000)Google Scholar
  13. 13.
    Hughes, J.: Generalizing monads to arrows. Science of Computer Programming 37(1-3), 67–111 (2000)MathSciNetCrossRefzbMATHGoogle Scholar
  14. 14.
    Jones, S.P., Hughes, J. (eds.): Report on the Programming Language Haskell 98 (1999)Google Scholar
  15. 15.
    Marceau, G., Cooper, G.H., Krishnamurthi, S., Reiss, S.P.: A dataflow language for scriptable debugging. In: IEEE International Symposium on Automated Software Engineering, pp. 218–227 (2004)Google Scholar
  16. 16.
    Nilsson, H., Courtney, A., Peterson, J.: Functional reactive programming, continued. In: ACM SIGPLAN Workshop on Haskell, pp. 51–64 (2002)Google Scholar
  17. 17.
    Peterson, J., Trifonov, V., Serjantov, A.: Parallel functional reactive programming. In: Practical Aspects of Declarative Languages, pp. 16–31 (2000)Google Scholar
  18. 18.
    Wadge, W.W., Ashcroft, E.A.: Lucid, the Dataflow Programming Language. Academic Press, London (1985)zbMATHGoogle Scholar
  19. 19.
    Wan, Z., Hudak, P.: Functional reactive programming from first principles. In: ACM Conference on Programming Language Design and Implementation, pp. 242–252 (2000)Google Scholar
  20. 20.
    Wan, Z., Taha, W., Hudak, P.: Real-time FRP. In: ACMSIGPLAN International Conference on Functional Programming, pp. 146–156 (2001)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2006

Authors and Affiliations

  • Gregory H. Cooper
    • 1
  • Shriram Krishnamurthi
    • 1
  1. 1.Brown UniversityProvidenceUSA

Personalised recommendations