Syntactic extensions in the programming language LISP
Syntactic extensions in the programming language LISP
OOPSLA/ECOOP '90 Proceedings of the European conference on object-oriented programming on Object-oriented programming systems, languages, and applications
PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
ICFP '97 Proceedings of the second ACM SIGPLAN international conference on Functional programming
The Amulet Environment: New Models for Effective User Interface Software Development
IEEE Transactions on Software Engineering
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Java Swing
Programming languages as operating systems (or revenge of the son of the lisp machine)
Proceedings of the fourth ACM SIGPLAN international conference on Functional programming
FranTk - a declarative GUI language for Haskell
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
The Java syntactic extender (JSE)
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Template meta-programming for Haskell
Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
Functional reactive programming, continued
Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
Using C++ Templates to Implement Role-Based Designs
ISOTAS '96 Proceedings of the Second JSSST International Symposium on Object Technologies for Advanced Software
DrScheme: a programming environment for Scheme
Journal of Functional Programming
Embedding dynamic dataflow in a call-by-value language
ESOP'06 Proceedings of the 15th European conference on Programming Languages and Systems
Relationally-parametric polymorphic contracts
Proceedings of the 2007 symposium on Dynamic languages
GUIs for real-time programs using universal pointers
ACM SIGGRAPH 2008 posters
Functional programming and theorem proving for undergraduates: a progress report
Proceedings of the 2008 international workshop on Functional and declarative programming in education
A functional I/O system or, fun for freshman kids
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Flapjax: a programming language for Ajax applications
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
Reactive imperative programming with dataflow constraints
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Reactive behavior in object-oriented applications: an analysis and a research roadmap
Proceedings of the 12th annual international conference on Aspect-oriented software development
Asynchronous functional reactive programming for GUIs
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
Hi-index | 0.00 |
Functional reactive programming integrates dynamic dataflow with functional programming to offer an elegant and powerful model for expressing computations over time-varying values. Developing realistic applications, however, requires access to libraries, such as those for GUIs, that are written in mainstream object-oriented languages. Previous work has developed functional reactive interfaces for GUI toolkits but has not provided an account of the principles underlying the implementation strategy. In this paper, we investigate this problem by studying the adaptation of the object-oriented toolkit MrEd to the functional reactive language FrTime. The heart of this problem is how to communicate state changes between the application and the toolkit's widget objects. After presenting a basic strategy for adaptation, we discuss abstraction techniques based on mixins and macros that allow us to adapt numerous properties in many widget classes with minimal code duplication. This results in a wrapper for the entire MrEd toolkit in only a few hundred lines of code. We also briefly discuss a spreadsheet developed with the resulting toolkit.