How to make ad-hoc polymorphism less ad hoc
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Domain specific embedded compilers
Proceedings of the 2nd conference on Domain-specific languages
Tagless staged interpreters for typed languages
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Template meta-programming for Haskell
ACM SIGPLAN Notices
Journal of Functional Programming
Faking it Simulating dependent types in Haskell
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
Strongly typed heterogeneous collections
Haskell '04 Proceedings of the 2004 ACM SIGPLAN workshop on Haskell
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Boxy types: inference for higher-rank types and impredicativity
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
Practical type inference for arbitrary-rank types
Journal of Functional Programming
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Paradise: a two-stage DSL embedded in Haskell
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
GPCE '08 Proceedings of the 7th international conference on Generative programming and component engineering
Complete and decidable type inference for GADTs
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Finally tagless, partially evaluated: Tagless staged interpreters for simpler typed languages
Journal of Functional Programming
Nikola: embedding compiled GPU functions in Haskell
Proceedings of the third ACM Haskell symposium on Haskell
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Accelerating Haskell array codes with multicore GPUs
Proceedings of the sixth workshop on Declarative aspects of multicore programming
IDRIS ---: systems programming meets full dependent types
Proceedings of the 5th ACM workshop on Programming languages meets program verification
The design and implementation of feldspar an embedded language for digital signal processing
IFL'10 Proceedings of the 22nd international conference on Implementation and application of functional languages
TLDI '12 Proceedings of the 8th ACM SIGPLAN workshop on Types in language design and implementation
Haskell type constraints unleashed
FLOPS'10 Proceedings of the 10th international conference on Functional and Logic Programming
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Hi-index | 0.00 |
Strongly-typed functional languages provide a powerful framework for embedding Domain-Specific Languages (DSLs). However, building type-safe functions defined over an embedded DSL can introduce application-specific type constraints that end up being imposed on the DSL data types themselves. At best, these constraints are unwieldy and at worst they can limit the range of DSL expressions that can be built. We present a simple solution to this problem that allows application-specific constraints to be specified at the point of use of a DSL expression rather than when the DSL's embedding types are defined. Our solution applies equally to both tagged and tagless representations and, importantly, also works in the presence of higher-rank types.