Specification and Analysis of System Architecture Using Rapide
IEEE Transactions on Software Engineering - Special issue on software architecture
ICFP '97 Proceedings of the second ACM SIGPLAN international conference on Functional programming
Science of Computer Programming - Special issue on mathematics of program construction
Functional reactive programming from first principles
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
Functional reactive programming, continued
Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
SAIG '00 Proceedings of the International Workshop on Semantics, Applications, and Implementation of Program Generation
Acme: an architecture description interchange language
CASCON '97 Proceedings of the 1997 conference of the Centre for Advanced Studies on Collaborative research
Scripting COM Components in Haskell
ICSR '98 Proceedings of the 5th International Conference on Software Reuse
Modeling interactive 3D and multimedia animation with an embedded language
DSL'97 Proceedings of the Conference on Domain-Specific Languages on Conference on Domain-Specific Languages (DSL), 1997
Plugging a Space Leak with an Arrow
Electronic Notes in Theoretical Computer Science (ENTCS)
Causal commutative arrows and their optimization
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Service combinators for farming virtual machines
COORDINATION'08 Proceedings of the 10th international conference on Coordination models and languages
Journal of Functional Programming - Dedicated to ICFP 2009
Hi-index | 0.00 |
HPorter is a DSL embedded in Haskell for composing processes running on a parallel computer. Using arrows (a generalization of monads), one can “wire together” processes in a manner analogous to a signal-processing application. The processes themselves are typically existing C or C++ programs, but may also be programs written in a first-order sub-language in Haskell that supports basic arithmetic, trigonometric functions, and other related operations. In both cases, once the processes are wired together, the supporting Haskell implementation is out of the loop – imported C programs run unimpeded, the Haskell sub-language is compiled into C code, and all data paths run directly between C processes. But in addition, HPorter's event-driven reactivity permits reconfiguration of these tightly-coupled processes at any time, thus providing a degree of dynamism that is critical in many applications. The advantages of our approach over conventional scripting languages include a higher degree of type safety, a declarative style, dynamic reconfiguration of processes, having the full power of Haskell, and portability across operating systems. We have implemented HPorter both on the QNX operating system and using conventional TCP/IP sockets, and are using it in a practical application in Yale's Humanoid Robotics Laboratory, where the processes correspond to soft-real-time tasks such as computer vision, motor control, planning, and limb kinematics.