2004
DOI: 10.1145/1016848.1016865
|View full text |Cite
|
Sign up to set email alerts
|

Implementing functional logic languages using multiple threads and stores

Abstract: Recent functional logic languages such as Curry and Toy combine lazy functional programming with logic programming features including logic variables, non-determinism, unification, narrowing, fair search, concurrency, and residuation. In this paper, we show how to extend a conventional interpreter for a lazy functional language to handle these features by adding support for reference cells, process-like and thread-like concurrency mechanisms, and a novel form of multi-versioned store. Our interpretation scheme… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
5
0

Year Published

2009
2009
2017
2017

Publication Types

Select...
4
2

Relationship

2
4

Authors

Journals

citations
Cited by 6 publications
(5 citation statements)
references
References 16 publications
0
5
0
Order By: Relevance
“…Fischer et al [12] developed a custom monadic datatype for lazy nondeterministic programming. Their motivation was to nd a way combine three desirable features found in functional logic programming [13,18,32] and probabilistic programming [11,16] -lazyness, sharing (memoization), and nondeterminism, which are known to be tricky to combine in functional programming. Having two versions of transitions (Figures 4 and 5) in our implementation was to avoid an instance of undesirable side e ects from this trickinessnaive combination of laziness and nondeterminism causing needless traversals.…”
Section: Monadic Encodings Of Nondeterminismmentioning
confidence: 99%
“…Fischer et al [12] developed a custom monadic datatype for lazy nondeterministic programming. Their motivation was to nd a way combine three desirable features found in functional logic programming [13,18,32] and probabilistic programming [11,16] -lazyness, sharing (memoization), and nondeterminism, which are known to be tricky to combine in functional programming. Having two versions of transitions (Figures 4 and 5) in our implementation was to avoid an instance of undesirable side e ects from this trickinessnaive combination of laziness and nondeterminism causing needless traversals.…”
Section: Monadic Encodings Of Nondeterminismmentioning
confidence: 99%
“…In typical interpreters, if and when the computation of either completes, the result is consumed, e.g., printed, and the user is given the option to either terminate the execution or continue with the computation of the other. Copying is simpler than backtracking and it is used in some experimental implementations of functional logic languages Tolmach et al 2004). The major objection to copying is the significant investment of time and memory made when a nondeterministic step is executed.…”
Section: Previous Approachesmentioning
confidence: 99%
“…There are different compilers for FLP languages that are partly based on the semantic frameworks discussed above. Moreover, the operational semantics by Albert et al (2005) has been implemented as Haskell interpreters by Tolmach & Antoy (2003) and Tolmach et al (2004). We do not define a compiler that translates an FLP language; nor do we define an interpreter in Haskell.…”
Section: Functional Logic Programmingmentioning
confidence: 99%