2002
DOI: 10.1007/3-540-45788-7_4
|View full text |Cite
|
Sign up to set email alerts
|

Functional Logic Design Patterns

Abstract: Abstract. We introduce a handful of software design patterns for functional logic languages. Following usual approaches, for each pattern we propose a name and we describe its intent, applicability, structure, consequences, etc. Our patterns deal with data type construction, identifier declarations, mappings, search, nondeterminism and other fundamental aspects of the design and implementation of programs. We present some problems and we show fragments of programs that solve these problems using our patterns. … Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
44
0

Year Published

2005
2005
2020
2020

Publication Types

Select...
8

Relationship

5
3

Authors

Journals

citations
Cited by 38 publications
(44 citation statements)
references
References 32 publications
0
44
0
Order By: Relevance
“…Computing with failures is a typical programming technique and provides for specific programming patterns [6]. Hence, in contrast to functional programming, a failing computation should not abort the complete evaluation but it should be considered as some part of a computation that does not produce a meaningful result.…”
Section: The Basic Translation Schemementioning
confidence: 99%
See 1 more Smart Citation
“…Computing with failures is a typical programming technique and provides for specific programming patterns [6]. Hence, in contrast to functional programming, a failing computation should not abort the complete evaluation but it should be considered as some part of a computation that does not produce a meaningful result.…”
Section: The Basic Translation Schemementioning
confidence: 99%
“…In particular, they combine higher-order functions and demand-driven evaluation from functional programming with logic programming features like non-deterministic search and computing with partial information (logic variables). The combination of these features has led to new design patterns [6] and better abstractions for application programming, e.g., as shown for programming with databases [14,18], GUI programming [21], web programming [22,23,26], or string parsing [17].…”
Section: Introductionmentioning
confidence: 99%
“…Modern languages of this kind [8,17,19] combine the concepts of demand-driven evaluation and higher-order functions from functional programming with logic programming features like computing with partial information (logic variables), unification, and nondeterministic search for solutions. This combination, supported by optimal evaluation strategies [1] and new design patterns [2], leads to better abstractions in application programs, e.g., as shown for programming with databases [3,6] or web programming [10,12,14]. The declarative multi-paradigm language Curry [8,17] is a functional logic language extended by features for concurrent programming.…”
Section: Functional Logic Programming and Currymentioning
confidence: 99%
“…This property of compositionality is particularly useful if one combines various UIs into complex web pages (see below). The use of free variables for fresh references in data structures is a specific functional logic design pattern called "locally defined global identifier" [2]. An alternative would be a global counter to create unique references that is threaded through the construction of the user interface.…”
Section: Examplesmentioning
confidence: 99%
“…In particular, predicates and functions must have distinct modes so that their arguments are either ground or unbound at call time. This inhibits the application of typical logic programming techniques, like computation with partially instantiated structures, so that some programming techniques developed for functional logic programming languages [11,43,44] can not be applied. This condition has been relaxed in the language HAL [33] which adds constraint solving possibilities.…”
Section: Introductionmentioning
confidence: 99%