Proc. of a conference on Functional programming languages and computer architecture
A simple technique for handling multiple polymorphism
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
Views: a way for pattern matching to cohabit with data abstraction
POPL '87 Proceedings of the 14th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Compiling lazy pattern matching
LFP '92 Proceedings of the 1992 ACM conference on LISP and functional programming
Compiling pattern matching by term decomposition
Journal of Symbolic Computation
Theory and Practice of Object Systems - Special issue: type systems
Pizza into Java: translating theory into practice
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
SNOBOL , A String Manipulation Language
Journal of the ACM (JACM)
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
A Metalanguage for interactive proof in LCF
POPL '78 Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
C++ Templates
Purely Functional Data Structures
Purely Functional Data Structures
PADL '00 Proceedings of the Second International Workshop on Practical Aspects of Declarative Languages
Compiling a functional language
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
GPCE '07 Proceedings of the 6th international conference on Generative programming and component engineering
Extensible pattern matching via a lightweight language extension
ICFP '07 Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
Caml trading – experiences with functional programming on wall street
Journal of Functional Programming
Experience report: a pure shirt fits
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Compiling pattern matching to good decision trees
Proceedings of the 2008 ACM SIGPLAN workshop on ML
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Journal of Functional Programming
Journal of Functional Programming
Experience report: OCaml for an industrial-strength static analysis framework
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Pattern Calculus: Computing with Functions and Structures
Pattern Calculus: Computing with Functions and Structures
Matchete: paths through the pattern matching jungle
PADL'08 Proceedings of the 10th international conference on Practical aspects of declarative languages
Programming language evolution and source code rejuvenation
Programming language evolution and source code rejuvenation
Proceedings of the 8th symposium on Dynamic languages
Proceedings of the 8th symposium on Dynamic languages
Open and efficient type switch for C++
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Proceedings of the 2013 companion publication for conference on Systems, programming, & applications: software for humanity
Hi-index | 0.00 |
Pattern matching is an abstraction mechanism that can greatly simplify source code. We present functional-style pattern matching for C++ implemented as a library, called Mach71. All the patterns are user-definable, can be stored in variables, passed among functions, and allow the use of class hierarchies. As an example, we implement common patterns used in functional languages. Our approach to pattern matching is based on compile-time composition of pattern objects through concepts. This is superior (in terms of performance and expressiveness) to approaches based on run-time composition of polymorphic pattern objects. In particular, our solution allows mapping functional code based on pattern matching directly into C++ and produces code that is only a few percent slower than hand-optimized C++ code. The library uses an efficient type switch construct, further extending it to multiple scrutinees and general patterns. We compare the performance of pattern matching to that of double dispatch and open multi-methods in C++.