Improving the Performance of the Paisley Pattern-Matching EDSL by Staged Combinatorial Compilation

@inproceedings{Widemann2019ImprovingTP,
  title={Improving the Performance of the Paisley Pattern-Matching EDSL by Staged Combinatorial Compilation},
  author={Baltasar Tranc{\'o}n y Widemann and Markus Lepper},
  booktitle={DECLARE},
  year={2019}
}
Paisley is a declarative lightweight embedded domain-specific language for expressive, non-deterministic, non-invasive pattern matching on arbitrary data structures in Java applications. As such, it comes as a pure Java library of pattern-matching combinators and corresponding programming idioms. While the combinators support a basic form of self-optimization based on heuristic metadata, overall performance is limited by the distributed and compositional implementation that impedes non-local… 
1 Citation

LLJava live at the loop: a case for heteroiconic staged meta-programming

LLJava-live, the staged API of the low-level JVM language LLJava, can be used to complement an interpreted EDSL with orthogonal and extensible compilation facilities to accelerate embedded domain-specific languages on the Java platform.

A Practical Study of Control in Objected-Oriented-Functional-Logic Programming with Paisley

This work presents an extension to the Paisley framework that adds pattern-based control flow, and finds the approach viable for incremental refactoring of legacy code, with significant qualitative improvements regarding separation of concerns, clarity and intentionality.

Paisley: Pattern Matching à la Carte

A tool for the implementation of pattern matching as fundamental means of automated data extraction from complex models in a general-purpose programming language that is compatible with object-oriented data abstraction and has full support for nondeterminism by backtracking.

Paisley: A Pattern Matching Library for Arbitrary Object Models

A tool for the implementation of pattern matching as fundamental means of automated data extraction from models of arbitrary shape and complexity in a general-purpose programming language that is compatible with object-oriented data abstraction, and can be ported to other mainstream languages.

Some Experiments on Light-Weight Object-Functional-Logic Programming in Java with Paisley

The expressiveness and performance of Paisley is discussed and evaluated in terms of the well-known combinatorial search problem “send more money” and its generalizations.

Interpreting XPath by Iterative Pattern Matching with Paisley

The extension of Paisley by pattern iteration is discussed, which adds a Kleene algebra of pattern function composition to the unrestricted use of the imperative host language, thus forming a hybrid object-oriented–functional–logic framework.

LLJava: Minimalist Structured Programming on the Java Virtual Machine [Work-in-Progress Research Paper]

The design and implementation of the LLJava language is reported on, based on careful analysis of bytecode information and rigorous design, that bridges the gap between Java source code and JVM bytecode.

Eta-expansion does The Trick

This article extends Gomard and Jones' partial evaluator for the λ-calculus,λ-Mix, with products and disjoint sums, and points out how eta-expansion for (finite) disJoint sums enable The Trick.

A typed, algebraic approach to parsing

A core type system for the context-free expressions is defined which gives a compositional criterion for identifying those context- free expressions which can be parsed unambiguously by predictive algorithms in the style of recursive descent or LL(1).

Why Functional Programming Matters

This paper shows that two features of functional languages in particular, higher-order functions and lazy evaluation, can contribute significantly to modularity.