We present PyFRP, a reactive programming library written in Python. PyFRP provides a rich set of high-level abstractions and operators, relieving the user of cumbersome implementation chores while maintaining expressive power. We have successfully used this software in a summer camp environment to allow students without a background in computing to explore a wide variety of subject material within a 3D virtual environment, including computer science, mathematics, physics, and art. Here we discuss the technical details of our system.
This system is based on Functional Reactive Programming (FRP), a reactive framework originally developed within the Haskell community. Our work extends the underlying semantic model to include reactive objects, allowing PyFRP to work smoothly with underlying object-oriented libraries within the reactive style. Programs are defined as a set of reactive variables and objects, where reactive variables have time varying values and reactive objects augment the underlying Python objects by continuously updating reactive fields within the objects. Thus the behaviors and events of FRP can easily be integrated into existing object-oriented libraries. Our system provides strong synchronization guarantees that reduce possibilities for event-ordering anomalies (race conditions) in ordinary reactive code.
In this paper we describe the details of our implementation, provide examples of our declarative programming style, and discuss how our system can be used in an educational environment.
Mon 26 Oct Times are displayed in time zone: Eastern Time (US & Canada) change
|13:30 - 13:55|
|Tool Demo - PyFRP: Function Reactive Programming in Python|
John PetersonWestern State Colorado University, Alan ClearyMontana State University, Ken RoeThe Johns Hopkins UniversityFile Attached
|13:55 - 14:20|
|Tool Demo - Teaching Software Architecture Concepts with HUSACCT|
|14:20 - 14:45|
|Tool Demo - Writing C Code Patches in a VPL Learning Environment|
Ted KafalaCMSVFile Attached
|14:45 - 15:00|
|Session 2 & Demos Discussion|
Eli TilevichVirginia Tech