| | |
Summary: A Monadic Semantics for Core Curry
Andrew Tolmach and Sergio Antoy
Dept. of Computer Science, Portland State University,
P.O.Box 751, Portland OR 97207, USA
{apt,antoy}@cs.pdx.edu
12th Int. Workshop on Functional and (Constraint) Logic Programming (WFLP03), Valencia, Spain -- June 12-13, 2003.
Technical Report DSIC-II/13/03, Departmento de Sistem`as y Computatci`on, Universidad Polit´ecnica de Valencia, pp. 33-46.
Abstract. We give a high-level operational semantics for the essential core of the
Curry language, including higher-order functions, call-by-need evaluation, non-
determinism, narrowing, and residuation. The semantics is structured in monadic
style, and is presented in the form of an executable interpreter written in Haskell.
1 Introduction
The functional logic language Curry combines lazy functional programming with logic
programming features based on both narrowing and residuation. Describing the seman-
tics of these features and their interaction in a common framework is a non-trivial task,
especially because functional and logic programming have rather different semantic tra-
ditions. The "official" semantics for Curry [4], largely based on work by Hanus [6, 5],
is an operational semantics based on definitional trees and narrowing steps. Although
fairly low-level, this semantics says nothing about sharing behavior. Functional lan-
guages are typically given denotational or natural ("big step") operational semantics.
|