Functional programs often define functions by pattern matching where patterns may inadvertedly overlap through successive function calls. This leads to hidden inefficiencies since the recursively called function possibly repeats redundant tests while trying to match the pattern. An analysis which is based on conservative symbolic execution (similar to higher order constant propagation) is proposed for a strict higher-order language to drive an arity raiser which generates specialized versions for functions with partially known arguments. To ensure termination only the definitely consumed part of the partially known arguments is considered. 1 Introduction Pattern matching is ubiquitous in modern functional programming languages like ML or H...
This paper presents matching logic, a first-order logic (FOL) variant forspecifying and reasoning ab...
Program slicing provides explanations that illustrate how program outputs were produced from inputs....
AbstractBecause functions are abstract values without convenient print representations, implementing...
We address the problem of complementing higher-order patterns without repetitions of free variables....
Abstract. In this report a new backward strictness analysis for functional languages is presented. I...
Haskell is a functional programming language with nominally non-strict semantics, implying that eval...
We present a simple, practical algorithm for higher-order matching in the context of automatic progr...
One of the concepts that programming language theory deals with are computational effects such as in...
AbstractThis paper formally describes and studies an algorithm for compiling functions defined throu...
Defining functions by pattern matching over the arguments is advantageous for understanding and reas...
Type-based model checking algorithms for higher-order recursion schemes have recently emerged as a p...
The theory of programming with pattern-matching function definitions has been studied mainly in the ...
Abstract. We propose pattern matching calculi as a refinement of λ-calculus that integrates mechanis...
Traditional functional languages do not have an explicit distinction between binding times. It aris...
Abstract. Higher-order logic proof systems combine functional programming with logic, providing func...
This paper presents matching logic, a first-order logic (FOL) variant forspecifying and reasoning ab...
Program slicing provides explanations that illustrate how program outputs were produced from inputs....
AbstractBecause functions are abstract values without convenient print representations, implementing...
We address the problem of complementing higher-order patterns without repetitions of free variables....
Abstract. In this report a new backward strictness analysis for functional languages is presented. I...
Haskell is a functional programming language with nominally non-strict semantics, implying that eval...
We present a simple, practical algorithm for higher-order matching in the context of automatic progr...
One of the concepts that programming language theory deals with are computational effects such as in...
AbstractThis paper formally describes and studies an algorithm for compiling functions defined throu...
Defining functions by pattern matching over the arguments is advantageous for understanding and reas...
Type-based model checking algorithms for higher-order recursion schemes have recently emerged as a p...
The theory of programming with pattern-matching function definitions has been studied mainly in the ...
Abstract. We propose pattern matching calculi as a refinement of λ-calculus that integrates mechanis...
Traditional functional languages do not have an explicit distinction between binding times. It aris...
Abstract. Higher-order logic proof systems combine functional programming with logic, providing func...
This paper presents matching logic, a first-order logic (FOL) variant forspecifying and reasoning ab...
Program slicing provides explanations that illustrate how program outputs were produced from inputs....
AbstractBecause functions are abstract values without convenient print representations, implementing...