LUCID, the dataflow programming language
LUCID, the dataflow programming language
LUSTRE: a declarative language for real-time programming
POPL '87 Proceedings of the 14th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Computational lambda-calculus and monads
Proceedings of the Fourth Annual Symposium on Logic in computer science
The essence of functional programming
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The ESTEREL synchronous programming language: design, semantics, implementation
Science of Computer Programming
FUDGETS: a graphical user interface in a lazy functional language
FPCA '93 Proceedings of the conference on Functional programming languages and computer architecture
Powerlist: a structure for parallel recursion
ACM Transactions on Programming Languages and Systems (TOPLAS)
Lava: hardware design in Haskell
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
On embedding a microarchitectural design language within Haskell
Proceedings of the fourth ACM SIGPLAN international conference on Functional programming
Journal of the ACM (JACM)
Science of Computer Programming - Special issue on mathematics of program construction
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
The next 700 programming languages
Communications of the ACM
Recursion from Cyclic Sharing: Traced Monoidal Categories and Models of Cyclic Lambda Calculi
TLCA '97 Proceedings of the Third International Conference on Typed Lambda Calculi and Applications
Towards a Taxonomy of Functional Languages Implementations
PLILPS '95 Proceedings of the 7th International Symposium on Programming Languages: Implementations, Logics and Programs
CONCUR '96 Proceedings of the 7th International Conference on Concurrency Theory
Deterministic, Error-Correcting Combinator Parsers
Advanced Functional Programming, Second International School-Tutorial Text
Designing Arithmetic Circuits by Refinement in Ruby
Proceedings of the Second International Conference on Mathematics of Program Construction
Decomposing Typed Lambda Calculus into a Couple of Categorical Programming Languages
CTCS '95 Proceedings of the 6th International Conference on Category Theory and Computer Science
Modular Domain Specific Languages and Tools
ICSR '98 Proceedings of the 5th International Conference on Software Reuse
Premonoidal categories and notions of computation
Mathematical Structures in Computer Science
Journal of Functional Programming
Functional reactive robotics: an exercise in principled integration of domain-specific languages
Proceedings of the 4th ACM SIGPLAN international conference on Principles and practice of declarative programming
Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
Functional reactive programming, continued
Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
Haskell '03 Proceedings of the 2003 ACM SIGPLAN workshop on Haskell
Functional automatic differentiation with dirac impulses
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
wxHaskell: a portable and concise GUI library for haskell
Haskell '04 Proceedings of the 2004 ACM SIGPLAN workshop on Haskell
Type-safe, self inspecting code
Haskell '04 Proceedings of the 2004 ACM SIGPLAN workshop on Haskell
ACM SIGGRAPH 2005 Electronic Art and Animation Catalog
There and back again: arrows for invertible programming
Proceedings of the 2005 ACM SIGPLAN workshop on Haskell
Structuring quantum effects: superoperators as arrows
Mathematical Structures in Computer Science
A history of Haskell: being lazy with class
Proceedings of the third ACM SIGPLAN conference on History of programming languages
Plugging a Space Leak with an Arrow
Electronic Notes in Theoretical Computer Science (ENTCS)
Electronic Notes in Theoretical Computer Science (ENTCS)
Typed transformations of typed abstract syntax
Proceedings of the 4th international workshop on Types in language design and implementation
Opis: reliable distributed systems in OCaml
Proceedings of the 4th international workshop on Types in language design and implementation
Categorical semantics for arrows
Journal of Functional Programming
The Arrow Calculus as a Quantum Programming Language
WoLLIC '09 Proceedings of the 16th International Workshop on Logic, Language, Information and Computation
Safe functional reactive programming through dependent types
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Causal commutative arrows and their optimization
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Arrows, like Monads, are Monoids
Electronic Notes in Theoretical Computer Science (ENTCS)
Journal of Functional Programming
Arrows for secure information flow
Theoretical Computer Science
Switched-On Yampa: declarative programming of modular synthesizers
PADL'08 Proceedings of the 10th international conference on Practical aspects of declarative languages
Categorifying Computations into Components via Arrows as Profunctors
Electronic Notes in Theoretical Computer Science (ENTCS)
Typed Transformations of Typed Grammars: The Left Corner Transform
Electronic Notes in Theoretical Computer Science (ENTCS)
Cartesian effect categories are Freyd-categories
Journal of Symbolic Computation
Nettle: taking the sting out of programming network routers
PADL'11 Proceedings of the 13th international conference on Practical aspects of declarative languages
Idioms are Oblivious, Arrows are Meticulous, Monads are Promiscuous
Electronic Notes in Theoretical Computer Science (ENTCS)
A new method for dependent parsing
ESOP'11/ETAPS'11 Proceedings of the 20th European conference on Programming languages and systems: part of the joint European conferences on theory and practice of software
Extending monads with pattern matching
Proceedings of the 4th ACM symposium on Haskell
Embedding a functional hybrid modelling language in Haskell
IFL'08 Proceedings of the 20th international conference on Implementation and application of functional languages
Keeping calm in the face of change
Higher-Order and Symbolic Computation
The essence of dataflow programming
APLAS'05 Proceedings of the Third Asian conference on Programming Languages and Systems
PLPV '12 Proceedings of the sixth workshop on Programming languages meets program verification
Towards frabjous: a two-level system for functional reactive agent-based epidemic simulation
Proceedings of the 2nd ACM SIGHIT International Health Informatics Symposium
PADL'10 Proceedings of the 12th international conference on Practical Aspects of Declarative Languages
Journal of Functional Programming - Dedicated to ICFP 2009
AFP'04 Proceedings of the 5th international conference on Advanced Functional Programming
HPorter: using arrows to compose parallel processes
PADL'07 Proceedings of the 9th international conference on Practical Aspects of Declarative Languages
Virtualizing real-world objects in FRP
PADL'12 Proceedings of the 14th international conference on Practical Aspects of Declarative Languages
MSFP'06 Proceedings of the 2006 international conference on Mathematically Structured Functional Programming
Procera: a language for high-level reactive network control
Proceedings of the first workshop on Hot topics in software defined networks
Correct looping arrows from cyclic terms
FLOPS'12 Proceedings of the 11th international conference on Functional and Logic Programming
Avalanche: a fine-grained flow graph model for irregular applications on distributed-memory systems
Proceedings of the 1st ACM SIGPLAN workshop on Functional high-performance computing
Wormholes: introducing effects to FRP
Proceedings of the 2012 Haskell Symposium
Layout-sensitive language extensibility with SugarHaskell
Proceedings of the 2012 Haskell Symposium
Functional semantics of parsing actions, and left recursion elimination as continuation passing
Proceedings of the 14th symposium on Principles and practice of declarative programming
Fixing idioms: a recursion primitive for applicative DSLs
PEPM '13 Proceedings of the ACM SIGPLAN 2013 workshop on Partial evaluation and program manipulation
Grammar fragments fly first-class
Proceedings of the Twelfth Workshop on Language Descriptions, Tools, and Applications
Causality for free!: parametricity implies causality for functional reactive programs
PLPV '13 Proceedings of the 7th workshop on Programming languages meets program verification
Monadic functional reactive programming
Proceedings of the 2013 ACM SIGPLAN symposium on Haskell
Encoding secure information flow with restricted delegation and revocation in Haskell
Proceedings of the 1st annual workshop on Functional programming concepts in domain-specific languages
Synchronous digital circuits as functional programs
ACM Computing Surveys (CSUR)
Hi-index | 0.00 |
The categorical notion of monad, used by Moggi to structure denotational descriptions, has proved to be a powerful tool for structuring combinator libraries. Moreover, the monadic programming style provides a convenient syntax for many kinds of computation, so that each library defines a new sublanguage. Recently, several workers have proposed a generalization of monads, called variously "arrows" or Freyd-categories. The extra generality promises to increase the power, expressiveness and efficiency of the embedded approach, but does not mesh as well with the native abstraction and application. Definitions are typically given in a point-free style, which is useful for proving general properties, but can be awkward for programming specific instances. In this paper we define a simple extension to the functional language Haskell that makes these new notions of computation more convenient to use. Our language is similar to the monadic style, and has similar reasoning properties. Moreover, it is extensible, in the sense that new combining forms can be defined as expressions in the host language.