Singular and Plural Functions for Functional Logic Programming
Modern Functional Logic Programming (FLP) languages use non-terminating and non-confluent Constructor Systems (CS's) as programs in order to define non-strict non-deterministic functions. Two semantic alternatives have been usually considered for parameter passing with this kind of functions: call-time choice and run-time choice. While the former is the standard choice of modern FLP languages, the latter lacks some basic properties - mainly compositionality - that have prevented its use in practical FLP systems. Traditionally it has been considered that call-time choice induces a singular denotational semantics, while run-time choice induces a plural semantics.