Results 1 -
6 of
6
Implementing Functional Logic Languages Using Multiple Threads and Stores
- In Proc. of the Ninth International Conference on Functional Programming (ICFP 2004
, 2004
"... Abstract Recent functional logic languages such as Curry and Toy combinelazy 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 interp ..."
Abstract
-
Cited by 10 (5 self)
- Add to MetaCart
Abstract Recent functional logic languages such as Curry and Toy combinelazy 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 lan-guage to handle these features by adding support for reference cells, process-like and thread-like concurrency mechanisms, and a novelform of multi-versioned store. Our interpretation scheme is practical, and can be easily extended to perform compilation. The lan-guage specified by our interpreter is designed so that programs are deterministic in a novel and useful sense.
Purely Functional Lazy Non-deterministic Programming
"... Functional logic programming and probabilistic programming have demonstrated the broad benefits of combining laziness (non-strict evaluation with sharing of the results) with non-determinism. Yet these benefits are seldom enjoyed in functional programming, because the existing features for non-stric ..."
Abstract
-
Cited by 8 (2 self)
- Add to MetaCart
Functional logic programming and probabilistic programming have demonstrated the broad benefits of combining laziness (non-strict evaluation with sharing of the results) with non-determinism. Yet these benefits are seldom enjoyed in functional programming, because the existing features for non-strictness, sharing, and nondeterminism in functional languages are tricky to combine. We present a practical way to write purely functional lazy non-deterministic programs that are efficient and perspicuous. We achieve this goal by embedding the programs into existing languages (such as Haskell, SML, and OCaml) with high-quality implementations, by making choices lazily and representing data with non-deterministic components, by working with custom monadic data types and search strategies, and by providing equational laws for the programmer to reason about their code.
mHaskell: Mobile Computation in a Purely Functional Language
- Journal of Universal Computer Science
, 2004
"... This paper is a complete description of mHaskell, an extension of Concurrent Haskell for mobile computation. We describe new stateful mobility primitives that use higher-order channels, giving their operational semantics and an implementation outline. We show how medium-level coordination abstrac ..."
Abstract
-
Cited by 4 (0 self)
- Add to MetaCart
This paper is a complete description of mHaskell, an extension of Concurrent Haskell for mobile computation. We describe new stateful mobility primitives that use higher-order channels, giving their operational semantics and an implementation outline. We show how medium-level coordination abstractions can be constructed using monadic composition of the mobility primitives.
Resolving Inductive Definitions with Binders in Higher-Order Typed Functional Programming ⋆
"... Abstract. This paper studies inductive definitions involving binders, in which aliasing between free and bound names is permitted. Such aliasing occurs in informal specifications of operational semantics, but is excluded by the common representation of binding as meta-level λ-abstraction. Drawing up ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
Abstract. This paper studies inductive definitions involving binders, in which aliasing between free and bound names is permitted. Such aliasing occurs in informal specifications of operational semantics, but is excluded by the common representation of binding as meta-level λ-abstraction. Drawing upon ideas from functional logic programming, we represent such definitions with aliasing as recursively defined functions in a higher-order typed functional programming language that extends core ML with types for name-binding, a type of “semi-decidable propositions” and existential quantification for types with decidable equality. We show that the representation is sound and complete with respect to the language’s operational semantics, which combines the use of evaluation contexts with constraint programming. We also give a new and simple proof that the associated constraint problem is NP-complete. 1
A Denotational Semantics for Curry (progress report)
"... Abstract. We aim to build a denotational semantics for the functional logic programming language Curry, to be used for parametricity and logical relation arguments. First, we investigate only a subset of Curry, but include the important features that separate Curry from a just functional language. W ..."
Abstract
- Add to MetaCart
Abstract. We aim to build a denotational semantics for the functional logic programming language Curry, to be used for parametricity and logical relation arguments. First, we investigate only a subset of Curry, but include the important features that separate Curry from a just functional language. We compare a poweralgebraic and a multialgebraic semantic approach and motivate our decision for the multialgebraic one. Afterwards, we describe how general recursion and lists, as an example for algebraic data types, can be added. 1

