A basic abstract semantic algebra
Proc. of the international symposium on Semantics of data types
Realistic compiler generation
Realistic compilation by program transformation (detailed summary)
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Continuation-passing, closure-passing style
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The definition of Standard ML
Debugging standard ML without reverse engineering
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
Report on the programming language Haskell: a non-strict, purely functional language version 1.2
ACM SIGPLAN Notices - Haskell special issue
The essence of functional programming
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Imperative functional programming
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A system of constructor classes: overloading and implicit higher-order polymorphism
FPCA '93 Proceedings of the conference on Functional programming languages and computer architecture
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Building interpreters by composing monads
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
SIGPLAN '84 Proceedings of the 1984 SIGPLAN symposium on Compiler construction
Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory
Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory
Extensible Denotational Language Specifications
TACS '94 Proceedings of the International Conference on Theoretical Aspects of Computer Software
Proceedings of the first ACM SIGPLAN international conference on Functional programming
Building domain-specific embedded languages
ACM Computing Surveys (CSUR) - Special issue: position statements on strategic directions in computing research
ACM Computing Surveys (CSUR)
First-class polymorphism with type inference
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A systematic study of functional language implementations
ACM Transactions on Programming Languages and Systems (TOPLAS)
Toward a formal theory of extensible software
SIGSOFT '98/FSE-6 Proceedings of the 6th ACM SIGSOFT international symposium on Foundations of software engineering
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
DSL implementation using staging and monads
Proceedings of the 2nd conference on Domain-specific languages
Deriving backtracking monad transformers
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
Extensible algebraic datatypes with defaults
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
Design patterns for functional strategic programming
Proceedings of the 2002 ACM SIGPLAN workshop on Rule-based programming
Monads for incremental computing
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Composing monads using coproducts
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Testing monadic code with QuickCheck
Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
Spatial Cognition and Computation
Testing monadic code with QuickCheck
ACM SIGPLAN Notices
BSP in a lazy functional context
Trends in functional programming
Safe and Principled Language Interoperation
ESOP '99 Proceedings of the 8th European Symposium on Programming Languages and Systems
An Operational Investigation of the CPS Hierarchy
ESOP '99 Proceedings of the 8th European Symposium on Programming Languages and Systems
Vanilla: An Open Language Framework
GCSE '99 Proceedings of the First International Symposium on Generative and Component-Based Software Engineering
PADL '00 Proceedings of the Second International Workshop on Practical Aspects of Declarative Languages
Out-of-Core Functional Programming with Type-Based Primitives
PADL '00 Proceedings of the Second International Workshop on Practical Aspects of Declarative Languages
A Mixin-Based, Semantics-Based Approach to Reusing Domain-Specific Programming Languages
ECOOP '00 Proceedings of the 14th European Conference on Object-Oriented Programming
Difference-Based Modules: A Class-Independent Module Mechanism
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
Verifying BDD Algorithms through Monadic Interpretation
VMCAI '02 Revised Papers from the Third International Workshop on Verification, Model Checking, and Abstract Interpretation
ECOOP '97 Proceedings of the Workshops on Object-Oriented Technology
FroCoS '02 Proceedings of the 4th International Workshop on Frontiers of Combining Systems
A Language Prototyping Tool Based on Semantic Building Blocks
Computer Aided Systems Theory - EUROCAST 2001-Revised Papers
Applied Semantics, International Summer School, APPSEM 2000, Caminha, Portugal, September 9-15, 2000, Advanced Lectures
Fine Control of Demand in Haskell
MPC '02 Proceedings of the 6th International Conference on Mathematics of Program Construction
Modular development of interpreters from semantic building blocks
Nordic Journal of Computing
DADO: enhancing middleware to support crosscutting features in distributed, heterogeneous systems
Proceedings of the 25th International Conference on Software Engineering
Modular Domain Specific Languages and Tools
ICSR '98 Proceedings of the 5th International Conference on Software Reuse
A computational formalization for partial evaluation
Mathematical Structures in Computer Science
A study of evaluation order semantics in expressions with side effects
Journal of Functional Programming
TinkerType: a language for playing with formal systems
Journal of Functional Programming
Type-checking multi-parameter type classes
Journal of Functional Programming
A poor man's concurrency monad
Journal of Functional Programming
A survey of semantic description frameworks for programming languages
ACM SIGPLAN Notices
Journal of Functional Programming
Two-level types and parameterized modules
Journal of Functional Programming
Functional pearl: implicit configurations--or, type classes reflect the values of types
Haskell '04 Proceedings of the 2004 ACM SIGPLAN workshop on Haskell
Modular Monadic Program Slicing
COMPSAC '04 Proceedings of the 28th Annual International Computer Software and Applications Conference - Volume 01
Journal of Functional Programming
Monadification of functional programs
Science of Computer Programming - Special issue on program transformation
An embedded domain-specific language for type-safe server-side web scripting
ACM Transactions on Internet Technology (TOIT)
Journal of Functional Programming
A principled approach to operating system construction in Haskell
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
A monadic approach for avoiding code duplication when staging memoized functions
Proceedings of the 2006 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
ACM SIGPLAN Notices
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
Programming monads operationally with Unimo
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
Polymorphic variants in Haskell
Proceedings of the 2006 ACM SIGPLAN workshop on Haskell
In search of a program generator to implement generic transformations for high-performance computing
Science of Computer Programming - Special issue on the first MetaOCaml workshop 2004
Structured formal development in Isabelle
Nordic Journal of Computing - Selected papers of the 17th nordic workshop on programming theory (NWPT'05), October 19-21, 2005
On the relation of aspects and monads
Proceedings of the 6th workshop on Foundations of aspect-oriented languages
Aspect-oriented programming with type classes
Proceedings of the 6th workshop on Foundations of aspect-oriented languages
On the relations between monadic semantics
Theoretical Computer Science
A history of Haskell: being lazy with class
Proceedings of the third ACM SIGPLAN conference on History of programming languages
DSL implementation using staging and monads
DSL'99 Proceedings of the 2nd conference on Conference on Domain-Specific Languages - Volume 2
A modular monadic action semantics
DSL'97 Proceedings of the Conference on Domain-Specific Languages on Conference on Domain-Specific Languages (DSL), 1997
Constructing language processors with algebra combinators
GPCE '07 Proceedings of the 6th international conference on Generative programming and component engineering
Haskell '07 Proceedings of the ACM SIGPLAN workshop on Haskell workshop
Compound monads in specification languages
PLPV '07 Proceedings of the 2007 workshop on Programming languages meets program verification
Building Verification Condition Generators by Compositional Extension
Electronic Notes in Theoretical Computer Science (ENTCS)
Modular and generic programming with interpreterlib
Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering
Free-algebra models for the π -calculus
Theoretical Computer Science
Library for systematic search for expressions
AIC'06 Proceedings of the 6th WSEAS International Conference on Applied Informatics and Communications
Journal of Functional Programming
Type checking with open type functions
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Language and program design for functional dependencies
Proceedings of the first ACM SIGPLAN symposium on Haskell
Making monads first-class with template haskell
Proceedings of the first ACM SIGPLAN symposium on Haskell
Asynchronous Exceptions as an Effect
MPC '08 Proceedings of the 9th international conference on Mathematics of Program Construction
Asymptotic Improvement of Computations over Free Monads
MPC '08 Proceedings of the 9th international conference on Mathematics of Program Construction
Designing aspects for side-effect localization
Proceedings of the 2009 ACM SIGPLAN workshop on Partial evaluation and program manipulation
Challenges in the Specification of Full Contracts
IFM '09 Proceedings of the 7th International Conference on Integrated Formal Methods
HasCasl: Integrated higher-order specification and program development
Theoretical Computer Science
A rewriting logic approach to operational semantics
Information and Computation
ESOP '09 Proceedings of the 18th European Symposium on Programming Languages and Systems: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
A Machine-Checked Proof of the Average-Case Complexity of Quicksort in Coq
Types for Proofs and Programs
Writing Composable Software with InterpreterLib
SC '09 Proceedings of the 8th International Conference on Software Composition
DSL '09 Proceedings of the IFIP TC 2 Working Conference on Domain-Specific Languages
A Haskell Hosted DSL for Writing Transformation Systems
DSL '09 Proceedings of the IFIP TC 2 Working Conference on Domain-Specific Languages
Free theorems involving type constructor classes: functional pearl
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Unifying Analysis Tools with Rosetta
ASE '08 Proceedings of the 2008 23rd IEEE/ACM International Conference on Automated Software Engineering
Achieving information flow security through monadic control of effects
Journal of Computer Security - 18th IEEE Computer Security Foundations Symposium (CSF 18)
ML Module Mania: A Type-Safe, Separately Compiled, Extensible Interpreter
Electronic Notes in Theoretical Computer Science (ENTCS)
EffectiveAdvice: disciplined advice with explicit effects
Proceedings of the 9th International Conference on Aspect-Oriented Software Development
Arrows for secure information flow
Theoretical Computer Science
Constructing language processors with algebra combinators
Science of Computer Programming
Dynamically adaptable software with metacomputations in a staged language
SAIG'01 Proceedings of the 2nd international conference on Semantics, applications, and implementation of program generation
Using temporal relations to specify and test an instant messaging server
Proceedings of the 5th Workshop on Automation of Software Test
Monad transformers as monoid transformers
Theoretical Computer Science
Factorising folds for faster functions
Journal of Functional Programming
Modularity and Implementation of Mathematical Operational Semantics
Electronic Notes in Theoretical Computer Science (ENTCS)
Multi-stage programming with functors and monads: Eliminating abstraction overhead from generic code
Science of Computer Programming
Coalgebraic walks, in quantum and turing computation
FOSSACS'11/ETAPS'11 Proceedings of the 14th international conference on Foundations of software science and computational structures: part of the joint European conferences on theory and practice of software
A bottom-up approach to understand functional programs
Proceedings of The Fourth International C* Conference on Computer Science and Software Engineering
The rewriting logic semantics project: a progress report
FCT'11 Proceedings of the 18th international conference on Fundamentals of computation theory
Monads, zippers and views: virtualizing the monad stack
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
Monatron: an extensible monad transformer library
IFL'08 Proceedings of the 20th international conference on Implementation and application of functional languages
Modular monadic slicing in the presence of pointers
ICCS'06 Proceedings of the 6th international conference on Computational Science - Volume Part IV
Explicitly typed exceptions for haskell
PADL'10 Proceedings of the 12th international conference on Practical Aspects of Declarative Languages
Embedding an interpreted language using higher-order functions and types
Journal of Functional Programming
Free-algebra models for the π-calculus
FOSSACS'05 Proceedings of the 8th international conference on Foundations of Software Science and Computation Structures
Multi-stage programming with functors and monads: eliminating abstraction overhead from generic code
GPCE'05 Proceedings of the 4th international conference on Generative Programming and Component Engineering
AFP'04 Proceedings of the 5th international conference on Advanced Functional Programming
Refactoring functional programs
AFP'04 Proceedings of the 5th international conference on Advanced Functional Programming
Aspect-Oriented development of crosscutting features in distributed, heterogeneous systems
Transactions on Aspect-Oriented Software Development II
Proof abstraction for imperative languages
APLAS'06 Proceedings of the 4th Asian conference on Programming Languages and Systems
SLE'11 Proceedings of the 4th international conference on Software Language Engineering
Towards modular compilers for effects
TFP'11 Proceedings of the 12th international conference on Trends in Functional Programming
Reasoning about i/o in functional programs
CEFP'11 Proceedings of the 4th Summer School conference on Central European Functional Programming School
Addressing covert termination and timing channels in concurrent information flow systems
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
Constructing customized interpreters from reusable evaluators using GAME
SC'12 Proceedings of the 11th international conference on Software Composition
Web service publishing and composition based on monadic methods and program slicing
Knowledge-Based Systems
Modular type-safety proofs in Agda
PLPV '13 Proceedings of the 7th workshop on Programming languages meets program verification
The sequential semantics of producer effect systems
POPL '13 Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
POPL '13 Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Fault tolerance via idempotence
POPL '13 Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A typed monadic embedding of aspects
Proceedings of the 12th annual international conference on Aspect-oriented software development
Taming aspects with monads and membranes
Proceedings of the 12th workshop on Foundations of aspect-oriented languages
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
Programming and reasoning with algebraic effects and dependent types
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Extensible effects: an alternative to monad transformers
Proceedings of the 2013 ACM SIGPLAN symposium on Haskell
The rewriting logic semantics project: A progress report
Information and Computation
A coinductive calculus for asynchronous side-effecting processes
Information and Computation
Hi-index | 0.00 |
We show how a set of building blocks can be used to construct programming language interpreters, and present implementations of such building blocks capable of supporting many commonly known features, including simple expressions, three different function call mechanisms (call-by-name, call-by-value and lazy evaluation), references and assignment, nondeterminism, first-class continuations, and program tracing.The underlying mechanism of our system is monad transformers, a simple form of abstraction for introducing a wide range of computational behaviors, such as state, I/O, continuations, and exceptions.Our work is significant in the following respects. First, we have succeeded in designing a fully modular interpreter based on monad transformers that incudes features missing from Steele's, Espinosa's, and Wadler's earlier efforts. Second, we have found new ways to lift monad operations through monad transformers, in particular difficult cases not achieved in Moggi's original work. Third, we have demonstrated that interactions between features are reflected in liftings and that semantics can be changed by reordering monad transformers. Finally, we have implemented our interpreter in Gofer, whose constructor classes provide just the added power over Haskell's type classes to allow precise and convenient expression of our ideas. This implementation includes a method for constructing extensible unions and a form of subtyping that is interesting in its own right.