Scheme Macros for Non-linear Pattern Matching with Backtracking for Non-free Data Types

11/12/2019
by   Satoshi Egi, et al.
0

Pattern matching is an important feature of programming languages for data abstraction. Many pattern-matching extensions have been proposed and implemented for extending the range of data types to which pattern matching is applicable. Among them, the pattern-matching system proposed by Egi and Nishiwaki features practical pattern matching for non-free data types by providing an extensible non-linear pattern-matching facility with backtracking. However, they implemented their proposal only in an interpreter of the Egison programming language, and a method for compiling pattern-matching expressions of Egison was not discussed. This paper proposes a method for translating a program that contains pattern-matching expressions of Egison to a program that contains only the existing syntax constructs of functional programming languages. This method is based on the three key ideas: (i) transformation of a matcher to a function that takes a pattern and a target, and returns lists of triples of a pattern, a matcher, and a target; (ii) compilation of match-all to application of the map function; (iii) transformation of a value pattern to a function that takes an intermediate pattern-matching result and returns a value. This paper shows the proposed method works by showing Scheme macros that provide the users the pattern-matching facility of Egison. This paper also presents benchmark results that show Egison pattern-matching embedded in Gauche Scheme is faster than the original Egison interpreter.

READ FULL TEXT

page 3

page 8

page 12

page 16

page 17

page 18

research
08/31/2018

Non-linear Pattern Matching with Backtracking for Non-free Data Types

Non-free data types are data types whose data have no canonical forms. F...
research
02/14/2020

Functional Programming in Pattern-Match-Oriented Programming Style

Throughout the history of functional programming, recursion has emerged ...
research
08/30/2021

Embedded Pattern Matching

Haskell is a popular choice for hosting deeply embedded languages. A rec...
research
09/10/2018

Loop Patterns: Extension of Kleene Star Operator for More Expressive Pattern Matching against Arbitrary Data Structures

The Kleene star operator is an important pattern construct for represent...
research
08/15/2021

Enterprise Architecture Model Transformation Engine

With increasing linkage within value chains, the IT systems of different...
research
05/02/2017

Non-linear Associative-Commutative Many-to-One Pattern Matching with Sequence Variables

Pattern matching is a powerful tool which is part of many functional pro...
research
01/24/2023

Bridging Swift Error Handling Model to C++

Error handling is the process of responding to and recovering from error...

Please sign up or login with your details

Forgot password? Click here to reset