scispace - formally typeset
Search or ask a question

Showing papers on "Functional logic programming published in 1979"


Journal ArticleDOI
TL;DR: The notion that computation = controlled deduction was first proposed by Pay Hayes and more recently by Bibel and Vaughn-Pratt and the thesis that algorithms be regarded as consisting of both logic and control components is explored.
Abstract: The notion that computation = controlled deduction was first proposed by Pay Hayes [19] and more recently by Bibel [2] and Vaughn-Pratt [31]. A similar thesis that database systems should be regarded as consisting of a relational component, which defines the logic of the data, and a control component, which stores and retrieves it, has been successfully argued by Codd [10]. Hewitt's argument [20] for the programming language PLANNER, though generally regarded as an argument against logic, can also be regarded as an argument for the thesis that algorithms be regarded as consisting of both logic and control components. In this paper we shall explore some of the useful consequences of that thesis.

633 citations



Book ChapterDOI
03 Sep 1979
TL;DR: A denotational semantics for a simple language with parallelism was given, treating parallelism in terms of non-deterministic mergeing of uninterruptible actions, and expected identities such as the associativity and commutativity of the parallel combinator were true in this semantics.
Abstract: In [Plol] a powerdomain was defined which was intended as a kind of analogue of the powerset construction, but for (certain kinds) of cpos. For example the powerdomain~(S±) of the flat cpo Si, formed from a set S, is the set {X ! S~I(X#~) and ((±cX) or X is finite)} with the Egli-Milner ordering : X ~ Y ~ (~x ~ X.~ y ~ Y. x C y) A (~y c Y.3 x e X. x ~ y). E-M This enabled nondeterminism to be modelled by an analogue of set-theoretic union and a denotational semantics for a simple language with parallelism was given, treating parallelism in terms of non-deterministic mergeing of uninterruptible actions. Expected identities such as the associativity and commutativity of the parallel combinator were true in this semantics.

280 citations


Journal ArticleDOI
TL;DR: An approach to distributed computing at the level of general purpose programming languages is described, based on primitive notions of module, message, and transaction key, which appears to be useful for programming a wide range of tasks.
Abstract: Programming for distributed and other loosely coupled systems is a problem of growing interest This paper describes an approach to distributed computing at the level of general purpose programming languages Based on primitive notions of module, message, and transaction key, the methodology is shown to be independent of particular languages and machines It appears to be useful for programming a wide range of tasks This is part of an ambitious program of development in advanced programming languages, and relations with other aspects of the project are also discussed

177 citations


Proceedings ArticleDOI
30 May 1979
TL;DR: In this article, the language type system includes relations, views, and tuples as built-in types to provide more flexibility in writing procedures that update relations and views and an expression that produces sequences of values, called a generator, integrates relational query expressions with other iteration constructs found in general-purpose programming languages.
Abstract: Language constructs to support the development of data base applications provided in the programming language rigel are described. First, the language type system includes relations, views, and tuples as built-in types. Tuple-values are introduced to provide more flexibility in writing procedures that update relations and views.Second, an expression that produces sequences of values, called a generator, is defined which integrates relational query expressions with other iteration constructs found in general-purpose programming languages. As a result, relational expressions can be used in new contexts (e.g., as parameters to procedures) to provide new capabilities (e.g., programmer-defined aggregate functions).Lastly, a data abstraction facility, unlike those proposed for other data base programming languages, is described. It provides a better notation to specify the interface between a program and a data base and to support the disciplined use of views.All of these constructs are integrated into a sophisticated programming environment to enhance the development of well-structured programs.

156 citations


Journal ArticleDOI
TL;DR: This paper analyzes some of the shortcomings of programming languages as they now exist, and lays out some possible directions for future research.
Abstract: As computer technology matures, our growing ability to create large systems is leading to basic changes in the nature of programming. Current programming language concepts will not be adequate for building and maintaining systems of the complexity called for by the tasks we attempt. Just as high level languages enabled the programmer to escape from the intricacies of a machine's order code, higher level programming systems can provide the means to understand and manipulate complex systems and components. In order to develop such systems, we need to shift our attention away from the detailed specification of algorithms, towards the description of the properties of the packages and objects with which we build. This paper analyzes some of the shortcomings of programming languages as they now exist, and lays out some possible directions for future research.

148 citations


Journal ArticleDOI
TL;DR: Today I want to talk about the paradigms of programming, how they affect the authors' success as designers of computer programs, and how they should be taught and embodied in their programming languages.
Abstract: Today I want to talk about the paradigms of programming, how they affect our success as designers of computer programs, how they should be taught, and how they should be embodied in our programming languages.

128 citations


BookDOI
01 Jan 1979

97 citations


Book
01 Jan 1979
TL;DR: Introduction to Linear Programming and Game Theory, Third Edition includes various additions as well as improvements that have been developed over the last decade, and the most significant addition to the text involves technology.
Abstract: Introduction to Linear Programming and Game Theory, Third Edition includes various additions as well as improvements that have been developed over the last decade, and the most significant addition to the text involves technology. It features an introduction, discussion, and utilization of Solver, a spreadsheet software package that solves mathematical programming problems. PRT Simplex, a computer application for learning the simplex method, has been developed by co-author Gerard Keough and was designed to be used with this book.

75 citations


Journal ArticleDOI
TL;DR: The actual results obtained when a traditional linear programming computer code is used sequentially so as to solve the linear goal programming problem are presented.

64 citations



Journal ArticleDOI
TL;DR: Recursive refinement is claimed to be semantically as simple, and superior for programming ease and clarity, and some programming examples are offered to support this claim.
Abstract: The utility of repetitive constructs is challenged. Recursive refinement is claimed to be semantically as simple, and superior for programming ease and clarity. Some programming examples are offered to support this claim. The relation between the semantics of predicate transformers and "least fixed point" semantics is presented.

Book
01 Jan 1979
TL;DR: This dissertation presents a descriptive notation for data structures which is embedded in a programming language in such a way that the resulting language behaves as a synthetic tool for describing data and processes in a number of application areas.
Abstract: This dissertation presents a descriptive notation for data structures which is embedded in a programming language in such a way that the resulting language behaves as a synthetic tool for describing data and processes in a number of application areas. A series of examples including formulae, lists, flow charts, Algol text, files, matrices, organic molecules and complex variables is presented to explore the use of this tool. In addition, a small formal treatment is given dealing with the equivalence of evaluators and their data structures.

Journal ArticleDOI
30 May 1979
TL;DR: This paper explores the phenomenon of idioms, discusses how they can be used in teaching programming and understanding programs, and includes numerous examples of their use in practical situations.
Abstract: Idioms are programming language constructs characterized by frequency of occurrence, unity of purpose, ease of recognition, and composability of use. Due to APL's conciseness and functional orientation, the language contains a large vocabulary of idioms. This paper explores the phenomenon of idioms, discusses how they can be used in teaching programming and understanding programs, and includes numerous examples of their use in practical situations.

01 Jan 1979
TL;DR: In this article, the authors present a set of data entry rules for when data entered when data entry is not required, including the date when the data entry occurred and the timestamp of the entry.
Abstract: DD i j a n M 7 3 1473 E D I T I O N O F 1 N O V 6 5 IS O B S O L E T E UNCLASSIFIED S / N 0 1 0 2 0 1 4 6 6 0 1 | S E C U R I T Y C L A S S I F I C A T I O N O F T H I S P A G E (When Data Entered)

Journal ArticleDOI
TL;DR: This method has no use for the sequencing primitives of "structured programming," it is highly secure and systematic and flexible, and has the advantage in simplicity and flexibility.
Abstract: This paper contains an exposition of the method of programming with verification conditions. Although this method has much in common with the one discussed by Dijkstra in A Disciplne of Programming, it is shown to have the advantage in simplicity and flexibility. The simplicity is the result of the method's being directly based on Floyd's inductive assertions The method is flexible becasue of the way in which the program is constructed in two stages. In the first stage, a set of verification conditions is collected which corresponds to a program in "flowgraph" form. In this stage sequencing control is of no concern to the progmmer. Control is introduced in the second stage, which consists of automatable applications of translation and optimization rules, resulting in conventional code. Although our method has no use for the sequencing primitives of "structured programming," it is highly secure and systematic.

Book ChapterDOI
10 Sep 1979
TL;DR: A programming language concept called module is presented here as a means to partition systems effectively and to encapsulate local details and to specify explicitly those elements that are part of the interface between modules.
Abstract: The key to successful programming is finding the "right" structure of data and program. A programming language concept called module is presented here as a means to partition systems effectively. The module allows to encapsulate local details and to specify explicitly those elements that are part of the interface between modules.


Journal ArticleDOI
TL;DR: 1. 1N7R0DUC710N 7he 1dea 0f • • 0rth090na11ty • • 1n pr09ramm1n9 1an9ua9e5 f1r5t appeared, t0 the 6e5t 0f my kn0w1ed9e, 1n the A1901 68 11terature.
Abstract: 1. 1N7R0DUC710N 7he 1dea 0f • • 0rth090na11ty • • 1n pr09ramm1n9 1an9ua9e5 f1r5t appeared, t0 the 6e5t 0f my kn0w1ed9e, 1n the A1901 68 11terature. 51nce then refer-ence5 t0 0rth090na11ty have 6een made 1n the c0ntext5 0f 0ther pr09ramm1n9 1an9ua9e5. H0wever, 1 have n0t yet enc0untered a def1n1t10n 0f the term. 7he A1901 68 rep0rt 1, 5ect10n 0.1.2, mere1y 5tate5: • • 7he num6er 0f 1ndependent pr1m1t1ve c0ncept5 ha5 6een m1n1m12ed 1n 0rder that the 1an9ua9e 6e ea5y t0 de5cr16e, t0 1earn, and t0 1mp1ement. 0n the 0ther hand, the5e c0ncept5 have 6een app11ed • • 0rth090na11y • • 1n 0rder t0 max1m12e theeXpre551ve p0wer 0f the 1an9ua9e wh11e trY1n9 t0 av01d de1eter10u5 5uperf1u1t1e5 • •. What then 15 • • 0rth090na11ty • • • 7he term 15 n0rma11y u5ed 1n the c0ntext 0f 9e0metry 0r vect0r 5pace5 t0 de5cr16e a 5y5tem 0f c0-0rd1nate5 5uch~that chan9e5 1n the mea5ure 0f a 4uant1ty 1n any 0ne c0-0rd1nate~d1rect10n d0 n0t pr0ject 1nt0 chan9e5 1n ~any 0ther c0-0rd1nate. 1f, then, the pr0pert1e5 0f a pr09ramm1n9 1an9ua9e are 0rth090na1, they 5h0u1d 6e 1ndependent 0f each 0ther: f0r examp1e, 1ex1ca1 ru1e5 5h0u1d 6e 1ndependent 0f 5yntact1c c0ntext, and the f0rmat 0f 5yntact1c c0n5truct5 5h0u1d 6e 1ndependent 0f the type5 0f data va1ue5 t0 wh1ch they are app11ed. 7h15 def1n1t10n 15 5t111 very va9ue, and a m0re r190r0u5 5tatement 0f 1t w0u1d 6e a we1c0me 1mpr0vement. H0wever, f0r n0w 1 pr0p05e t0 w0rk w1th 1t and try t0 ref1ne the c0ncept 6y app1y1n9 1t t0 var10u5 area5 0f pr09ram 1an9ua9e de519n, d1v1ded 1nt0 1ex1ca1, 5yntact1c, and 5emant1c cate90r1e5. 1t w0u1d 6e 1ntere5t1n9 t0 kn0w reader5~ 0p1n10n5 0n the re5u1t: whether there 15 9enera1 a9reement 0n my 1nterpretat10n 0f 0rth090na11ty, whether any0ne can pr0p05e a m0re f0rma1 def1n1t10n, and 0p1n10n5 0n the extent t0 wh1ch 1t 15 a u5efu1 and de51ra61e a5pect 0f pr09ramm1n9 1an9ua9e de519n. 1ntu1t10n 1ead5 0ne t0 a5cr16e certa1n advanta9e5 t0 0rth090na11ty: the reduct10n 1n the num6er 0f 5pec1a1 ru1e5 0r except10n5 t0 ru1e5 5h0u1d make a 1an9ua9e ea51er • • t0 de5cr16e, t0 1earn, and t0 1mp1ement • •-1n the w0rd5 0f the A1901 68 rep0rt 1. 0n the 0ther hand, 5tr1ct app11cat10n 0f the 0rth090na11ty pr1nc1p1e may 1ead t0 c0n5truct5 wh1ch are c0nceptua11y 065cure when a ru1e 15 app11ed t0 a c0ntext 1n an unu5ua1 c0m61nat10n. L1kew15e the app11cat10n 0f 0rth090na11ty may extend the p0wer and 9enera11ty 0f a 1an9ua9e 6ey0nd …

Journal ArticleDOI
TL;DR: A sunple programming language f f m is defined for which a complete axiomatics is obtamable and a notton of complexity of a Hoare system is introduced based upon the lengths of proofs.
Abstract: A sunple programming language f f m IS defined for which a complete axiomatics is obtamable. Completeness is shown by presemmg a relauvely complete Hoare ax~omaUcs, demonstrating, by direct constmcuon, that the first-order theory of addmon ~+ as express,ve, and noting that ~+ Is complete. It is then shown that • ~m aS maxunal wath this property Further, a notton of complexity of a Hoare system is introduced based upon the lengths of proofs (dasregardmg proofs m the underlying logsc), and the system -~m, .~+ is shown to have polynomial complexity The nouon ts shown to be nontnvlal by presenting a language for which any Hoare axiom system has exponenual complextty rK~v WORDS AND PHRASES venficatmn, logic, complexity, theory of computation, programming languages, subrecurslve functions CR CATEGORIES' 5 21, 5 24, 5 25

Journal ArticleDOI
TL;DR: The legality assertions that must be produced by a compiler for the Euclid language are analyzed and the impact that this requirement has on the implementation of the language is discussed.
Abstract: The design of the programming language Euclid requires that a compiler for the language produce legality assertions to aid in verification of programs written in the language. This paper analyzes the legality assertions that must be produced and discusses the impact that this requirement has on the implementation of the language.

Proceedings ArticleDOI
01 Aug 1979
TL;DR: Perhaps the single most important paradigm of modern programming language design is block structure: the body of a definition unit can be developed without affecting other units (since its internal details are “hidden” from the outside).
Abstract: Perhaps the single most important paradigm of modern programming language design is block structure. Block-structured languages are characterized by nested definitional units (ALGOL blocks, PASCAL procedures, Euclid modules) having rather specialized scoping rules. In particular, access to entities defined in containing units is allowed (although sometimes with restrictions) while access to entities defined within a unit from outside it is severely restricted or totally forbidden.This method of programming language structuring supports a top-down program development methodology: the body of a definition unit can be developed (or modified) without affecting other units (since its internal details are “hidden” from the outside). Such units (most notably procedures) become the natural units of program development and modification.

Proceedings ArticleDOI
03 Oct 1979
TL;DR: This article examines data base description problems from the point of view of logic programming, and presents an experimental deductive data base system implemented in PROLOG.
Abstract: This article examines data base description problems from the point of view of logic programming, and presents an experimental deductive data base system implemented in PROLOG. We first discuss the advantages of logic for describing data bases, in a general manner, and then its application to our particular data base system. The incidence of natural language consultation capabilities upon the system's characteristics is briefly considered, and then we formally define our concept of a data base. Next we delimit which part of a data base's description is system-controlled, and which part is defined by the-user, entering into the details where the user's description is concerned. Finally, we show some examples of a data base consultation that were tested in our system.


Book
01 Jan 1979

Journal ArticleDOI
01 Apr 1979
TL;DR: Eight Artificial Intelligence programming languages (SAIL, LISP, MICROPLANNER, CONNIVER, MLISp, POP-2, AL, and QLISP) are presented and surveyed, with examples of their use in an automated shop environment.
Abstract: Eight Artificial Intelligence programming languages (SAIL, LISP, MICROPLANNER, CONNIVER, MLISP, POP-2, AL, and QLISP) are presented and surveyed, with examples of their use in an automated shop environment. Control structures are compared, and distinctive features of each language are highlighted. A simple programming task is used to illustrate programs in SAIL, LISP, MICROPLANNER, and CONNIVER. The report assumes reader knowledge of programming concepts, but not necessarily of the languages surveyed.

Book ChapterDOI
Cliff B. Jones1
22 Jan 1979
TL;DR: Various features of high-level programming languages are discussed and ways of providing definitions are proposed.
Abstract: Various features of high-level programming languages are discussed and ways of providing definitions are proposed. The definitions given are denotational.


Book ChapterDOI
16 Sep 1979
TL;DR: This paper is the first attempt to expose the logical approach as a unifying concept of the programming theory in the basis of the reborn and reconstructed constructive approach that could be called empirical constructivism.
Abstract: This paper is the first attempt to expose the logical approach as a unifying concept of the programming theory. It is well seen now that potential benefits are great but a radical reconstruction of the way of mathematical and programmistic thinking is required. In principle, programming has to be merged with mathematics. The author sees this merging accomplished on the basis ofthe reborn and reconstructed constructive approach that could be called empirical constructivism.