Firstification
Lisp and Symbolic Computation
Pizza into Java: translating theory into practice
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Making the future safe for the past: adding genericity to the Java programming language
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Scrap your boilerplate: a practical design pattern for generic programming
Proceedings of the 2003 ACM SIGPLAN international workshop on Types in languages design and implementation
ESOP '00 Proceedings of the 9th European Symposium on Programming Languages and Systems
Definitional interpreters for higher-order programming languages
ACM '72 Proceedings of the ACM annual conference - Volume 2
A comparative study of language support for generic programming
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Functional programming with the FC++ library
Journal of Functional Programming
C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond (C++ in Depth Series)
Concepts: linguistic support for generic programming in C++
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
An extended comparative study of language support for generic programming
Journal of Functional Programming
Relation-based computations in a monadic BSP model
Parallel Computing
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Real World Functional Programming: With Examples in F# and C#
Real World Functional Programming: With Examples in F# and C#
Electronic Notes in Theoretical Computer Science (ENTCS)
Generic programming with c++ concepts and haskell type classes: A comparison
Journal of Functional Programming
Using functional languages to facilitate C++ metaprogramming
Proceedings of the 8th ACM SIGPLAN workshop on Generic programming
Hi-index | 0.00 |
In this paper, we present a transformation that maps type-level expressions from functional higher-order, typed (HOT) languages to type-level expressions in object-oriented HOT languages by mapping higher-order types to type parameters of generics that are constrained with appropriate concepts. We introduce a novel form of "defunctionalization" and a correctness criterion based on the kind structure of the transformed expression, and show that our transformation preserves kind structure. The transformation is retargetable, based on two new kernel languages that can be bound to different functional and object-oriented languages; we already provide bindings to Haskell as front end and C++ concepts and Scala traits in the back ends. The transformational approach presents an alternative to a language extension and is useful in particular if functional features are employed at specification time. We motivate the approach and illustrate it using three sizable functional libraries in C++ that have signatures that are automatically generated from the corresponding Haskell signatures.