scispace - formally typeset
Search or ask a question

Showing papers on "Functional logic programming published in 1983"


Journal ArticleDOI
TL;DR: As I talked with enthusiasts and examined the systems they used, I began to develop a model of the features that produced such delight, and the central ideas seemed to be visibility of the object of interest; rapid, reversible, incremental actions; and replacement of complex command language syntax by direct manipulation of the objects of interest.
Abstract: These feelings are not, of course, universal, but the amalgam does convey an image of the truly pleased user. As I talked with these enthusiasts and examined the systems they used, I began to develop a model of the features that produced such delight. The central ideas seemed to be visibility of the object of interest; rapid, reversible, incremental actions; and replacement of complex command language syntax by direct manipulation of the object of interest-hence the term \"direct manipulation.\" Examples of direct manipulation systems

2,012 citations


Journal ArticleDOI
TL;DR: This paper identifies the major concepts and describes some of the more important language notations for writing concurrent programs and three general classes of concurrent programming languages are identified and compared.
Abstract: Much has been learned in the last decade about concurrent programming. This paper identifies the major concepts and describes some of the more important language notations for writing concurrent programs. The roles of processes, communication and syhchronization are discussed from both an operational and an axiomatic viewpoint. Language notations for expressing concurrent execution and for specifying process interaction are surveyed. Synchronization primitives based on shared variables and on message passing are described. Finally, three general classes of concurrent programming languages are identified and compared.

540 citations



Book
10 Jun 1983
TL;DR: An important list of topics in the physical and social sciences involves continuum concepts and modelling with infinite sets of inequalities in a finite number of variables, including engineering design, variational inequalities and saddle value problems, and fuzzy set theory.
Abstract: An important list of topics in the physical and social sciences involves continuum concepts and modelling with infinite sets of inequalities in a finite number of variables. Topics include: engineering design, variational inequalities and saddle value problems, nonlinear parabolic and bang-bang control, experimental regression design and the theory of moments, continuous linear programming, geometric programming, sequential decision theory, and fuzzy set theory. As an optimization involving only finitely many variables, semi-infinite programming can be studied with various reductions to finiteness, such as finite subsystems of the infinite inequality system or finite probability measures.

131 citations


Book
01 May 1983
TL;DR: This is the first introduction to computer programming text to focus on ""functional programming"" which is not too mathematically rigorous for freshmen, and is easy to follow and learn from.
Abstract: From the Publisher: This is the first introduction to computer programming text to focus on ""functional programming"" which is not too mathematically rigorous for freshmen. The text features an introduction to the Scheme programming language and real-world examples and exercises which are easy to follow and learn from.

89 citations


Book
20 May 1983
TL;DR: Though at the time of writing this it is unclear how popular or influential Ada will become, I have decided to select many examples from Ada as the authors make their way through this book, with a list of the high level programming languages Advances in the '70s.
Abstract: ion, development, and maintenance. Though at the time I am writing this it is unclear how popular or influential Ada will become, I have decided to select many examples from Ada as we make our way through this book. As we enter the decade of the '80s, change and progress in the field of computers and programming languages continues at a rapid pace. The most essential fact with respect to programming languages is the growing number in use. Unfortunately, there has been no extensive survey done that would allow us to create a table similar to Table 1-3, but for programming languages. But we might make some guesses. The top three programming languages, defined by the number of people who have used them to create programs are most likely COBOL, FORTRAN, and BASIC. I would wager that the second group is considerably smaller and contains APL, Pascal and PL/ 1. Figure 1-6 shows the results of one such survey. As its respondents were all from a business environment, its results are not surprising. Just as Esperanto hoped to unite all people under a single language, some have hoped to do the same with a single programming language. It is now clear that no one programming language can be equally satisfactory for all tasks. ALGOL60 was the lingua franca of the 1960s. The 1970s saw ANSI FORTRAN and PLIl used in addition to ALGOL60. Today it seems as if Pascal has become the iiI/gila ./i'al/('(l of the 1980s. I end this chapter with a list of the high level programming languages Advances in the '70s 25 Language Appr. No. of Speakers in Millions 1. Chinese 800 2. English 400 3. Hindi 240 4. Russian 210 5. Spanish 205 6. Arabic 130 7. German 120 8. Japanese 110 9. Portuguese 105 10. Bengali 100 11. French 85 12. Indonesian 80 13. Italian 65 Table 1-3: Top Thirteen Natural Languages By Usage which existed during the year 1976-77 as given by Jean Sammet. Two of her criteria are (i) that it be implemented on at least one general purpose computer, and (ij) that it be in use by someone other than the developer. For a complete discussion of the rules· see [Sammet 76]. , Though this list will continue to get more and more out-of-date as the years go by, its interest as a historical curiosity will (hopefully) increase. 26 The Evolution of Programming Languages Figure 1-6: Programming Languages Used by Survey Participants Advances in the '70s 27 Scientific Multipurpose Engineering ALGOL60 AED COGO ARIEL ALGOL68 ICES AUTOGRAF APL NASTRAN AUTOGRP BALM STRESS BASIC CLU STRUDL CESSL CMS-2 Hardware design FRMT-FTRN CORAL66 CDL FORTRAN CPS CSL GLYPNIR ELl DCDL IITRAN EXT'D-ALGOL ISPL JOSS HALlS Editing MAC360 HOS-STPL CYPHERTEXT NELIAC JOVIAL FILE COMPo PDEL LEAP PAGE PDELAN LOGO Equipment check PROSE LRLTRAN ATLAS SETL MUMPS DETOL SPEAKEASY NOMAD DMAD STIL OSCAR RATEL VECTRAN PARSEC Graphics EDP Pascal ARTSPEAK COBOL PLil GRAPHIC-ALGOL DATABASIC PLANS LG I-D-S/I PPL Machine tool UTLTYCODR REL-ENG. APT List processing RTLl2 Ll6 SAIL LAMBIT/L SIMULA67 LISPl.5 SPL MLISP SPL/1 MLISP2 TACPOL TREET Table 1-4: Roster of Programming Languages for '76-'77 28 The Evolution of Programming Languages Accounting Social Sciences String Proc. ABLE CROSSTABS COMlT-ll Artificial Intell. DATA-TEXT EOL-3 PLANNER ESP SNOBOL4 QLISP MINITAB-ll TRAC Computer Assist. Inst. MLAB VULCAN CAMlL OMNITAB-ll Formula manip. COURSEWRITER-lIl PROFILE ALTRAN FOIL SAS CAMAL LYRIC SCEPTRE FLAP PILOT SPSS FORMAC PLANIT TPL FORMAL TUTOR TROLL MACSYMA Circuit design Space planning MATHLAB68 ASTAP SIPLAN REDUCE ECAP-ll Systems prog. SCRATCH PAD B SETS Simulation BCPL Mathematical CSMP BLISS AMBUSH CSSL C GAMMA DARE CHILI MPS-III DSL CONVERT MPSX DYNAMO-III IMP PDS/MAGEN ECSSL LITTLE UHELP MARSYAS MAD Movies MIMIC PL/M BUGSYS MOBSSL-UAF PROTEUS C.A.M.L. Simulation disc. SDL Networks ASPOL SIMPL-T FGRAAL CELLSIM Till GIRL ECSS-II ULP Pharmacology GPSS XPL PL/PROPHET OSSL Real time PSML COMTRAN SIMSCRIPT-I.S SIMSCRIPT -11.5 Table 1-5: Roster of Programming Languages for '76-77 (cont'd) Advances in the '70s Concepts Discussed in This Chapter Abstraction ALGOL-like Applicative programming language Concatenation Data encapsulation Explicit Typing General purpose prog. language Imperative prog. language Implicit typing Iteration Programming language Selection Type Checking Universal prog. language von Neumann bottleneck 29ion ALGOL-like Applicative programming language Concatenation Data encapsulation Explicit Typing General purpose prog. language Imperative prog. language Implicit typing Iteration Programming language Selection Type Checking Universal prog. language von Neumann bottleneck 29 30 The Evolution of Programming Languages

83 citations


Book
01 Jan 1983

67 citations


Proceedings Article
01 Jan 1983
TL;DR: XYZ/E is a temporal-logic language that can express all conventional data structures and control structures, nondeterminate or concurrent programs, even programs with branching-time order, and adopts another approach that can ameliorate many problems of formalization.
Abstract: : In recent years, more and more computer scientists have been paying attention to temporal logic, since there are many properties of programs that can be described only be bringing the time parameter into consideration. But existing temporal logic languages, such as Lucid, in spite of their mathematical elegance, are still far from practical. I believe that a practical temporal-logic language, once it came into being, would have a wide spectrum of applications. XYZ/E is a temporal-logic language. Like other logic languages, it is a logic system as well as a programming language. But unlike them, it can express all conventional data structures and control structures, nondeterminate or concurrent programs, even programs with branching-time order. We find that the difficulties met in other logic languages often stem from the fact that they try to deal with these structures in a higher level. XYZ/E adopts another approach. We divide the language into two forms: the internal form and the external form. The former is lower level, while the latter is higher. Just as any logic system contains rules of abbreviation, so also in XYZ/E there are rules of abbreviation to transform the internal form into the external form, and vice versa. These two forms can be considered to be different representations of the same thing. We find that this approach can ameliorate many problems of formalization. Not only does XYZ/E have various practical applications, it also has a theoretical impact.

34 citations



Proceedings ArticleDOI
13 Jun 1983
TL;DR: This paper proposes an abstract model for OR-parallel interpretation which is an alternative to the backtracking mechanism of a serial interpreter, and consists of tokens and five kinds of function units mutually connected as a process graph.
Abstract: A logic programming language offers several kinds of parallelism for its execution Among these, this paper concentrates on OR-parallelism which is an alternative to the backtracking mechanism of a serial interpreter, and proposes an abstract model for OR-parallel interpretation It consists of tokens and five kinds of function units mutually connected as a process graph The overall processing is done by the flows of tokens among these units We also present a mechanism for token labeling, which makes this process graph reentrant A simulation result is given to show how efficiently the model works in terms of parallelism

31 citations



Journal ArticleDOI
TL;DR: Strong terminality and initiality of the subcategory of minimally defined models can be connected to mathematical and operational équivalence of recursive functions.
Abstract: — In the usual framework of abstract types programming languages inciuding a définition mechanism for partial recursive functions cannot be specified sufficiently complete because of the termination problem. Therefore the algebraic concepts of abstract types are extended to partial algebras leading to \"total\" homomorphisms for partial algebras. In this framework an abstract type is given defining a functional programming language. The category of models of that type can be structured with the help of a partial order induced by the total homomorphisms. This order shows the relationship between the different semantic models and the weü-known notions of fixed point theory. Initial and weahly terminal models correspond directly to least fixed points, the subcategories of optimal and maximal models correspond to optimal and maximal fixed points. Finally, strong terminality and initiality of the subcategory of minimally defined models can be connected to mathematical and operational équivalence of recursive functions. Résumé. — En raison du problème de terminaison la notion usuelle des types abstraits ne permet pas de spécifier (d'une manière suffisamment complète) des fonctions partiellement récursives ayant un domaine non récursif De ce fait nous élargissons les concepts algébriques des types abstraits par la notion cT algèbre partielle et la notion d'homomorphisme entre algèbres partielles. Nous appliquons cette méthode de spécification à Vexemple d'un langage de programmation fonctionnelle. La catégorie des modèles de ce type peut être analysée et structurée à F aide d'un ordre partiel induit par les homomorphismes faibles. Cet ordre montre les relations entre les différents modèles sémantiques d'un type et les notions bien connues de la théorie des points fixes. Les modèles initiaux et faiblement terminaux correspondent exactement aux plus petits points fixes et les sous-catégories des modèles optimaux et maximaux correspondent aux points fixes optimaux et aux points fixes maximaux. En plus les modèles terminaux de la sous-catégorie des modèles minimalement définis décrivent Céquivalence mathématique entre fonctions récursives pendant que les modèles initiaux de cette sous-catégorie caractérisent une équivalence opérationnelle.

Journal ArticleDOI
Dahl1
TL;DR: This article illustrates and explores two central representational issues: problemsolving knowledge and database knowledge with respect to logic and the technical aspects have been covered elsewhere.
Abstract: The idea that logic could serve as a programming language\" was put to practical use around 1972 in the formii of Prolog. 4 It has proved extremely valuable in imany amnbitious and diverse computational areas, includinig natural language processing, deductive databases, robotics, symbolic integration, and expert systems. Logic has traditionally provided a firmii conceptual framework for representing knowledge, as it can formally deal with the notion of logical consequence. The introduction of Prolog has made it possible to represent knowledge in terms of logic and also to expect appropriate inferences to be drawn trom it autonmatically. This article illustrates and explores these ideas with respect to two central representational issues: problemsolving knowledge and database knowledge. The technical aspects of both subjects have been covered elsewhere;5'6 this explanation uses simple, nontechnical termiis.


Journal ArticleDOI
TL;DR: The connection between formal logic and programs is a foundation for programming methodology superior to that usually adopted and this equivalence suggests programming languages which are far richer than all others currently in use.

Proceedings Article
01 Dec 1983

Journal ArticleDOI
TL;DR: This report describes the use of the relational operators to manipulate both data and functions, and introduces an improved notation for relational programming.
Abstract: : This report provides a brief overview of the method of programming in a relational calculus. This is a style of programming in which entire relations are manipulated as data, and in which the program itself is represented as a relation. This report describes the use of the relational operators to manipulate both data and functions, and introduces an improved notation for relational programming. (AUthor)

Proceedings ArticleDOI
24 Jan 1983
TL;DR: This paper discusses how to make variables "abstract", i.e., how to introduce the notion of variable in to a language so that variables have reasonable mathematical properties and presents an equational logic that does so for Russell.
Abstract: One of the fundamental notions of programming, and thus of programming languages, is the variable. Recently, the variable has come under attack. The proponents of "functional programming" have argued that variables are at the root of all our problems in programming. They claim that we must rid our languages of all manifestations of the "vonNeumann bottleneck" and learn to live in the changeless world of functional combinators.While we may not, believe all the claims of the functional programming advocates, there is evidence that the treatment of variables in most programming languages leaves much to be desired. In this paper we discuss how to make variables "abstract", i.e., how to introduce the notion of variable in to a language so that variables have reasonable mathematical properties. This paper includes:--- a discussion of language design principles that allow a more mathematical treatment of variables in programming language, and--- a description of an equational logic for the programming language Russell [Boehm80]. Although this logic follows much of the development of abstract data types (cf. [Guttag78]), it is novel in its treatment of a language in which expressions not only produce values but also can have effects. We discuss the over all structure of the logic and present in detail the rules particularly relevant to the semantics of variables. A complete presentation of the logic appears in [Demers82], and the rule numbers in this paper agree with the numbers used there.In the next section, we discuss the underlying language principles needed to make an equational specification of variables possible. In the sections that follow, we present a logic that does so for Russell.



Journal ArticleDOI
TL;DR: The system operates as an interpreter of the user's instructions, storing his decision and the conclusions inferred from those decisions, and automatically maintains consistency from a user's point of view.
Abstract: We describe experimental work in logic programming for architects, leading to the setting up of a fact dependency system. The system operates as an interpreter of the user's instructions, storing his decision and the conclusions inferred from those decisions. Consistency from a user's point of view is automatically maintained. A separate introduction to the Prolog logic programming language is appended to this paper.

Proceedings ArticleDOI
TL;DR: EZ is described, which attempts to unify command and programming languages by using high-level string-processing concepts, such as those in SNOBOL4 and Icon, and is accomplished by type fusion, which pushes the differences between some classes of types out of the language and into the implementation.
Abstract: Unifying programming and command languages is a promising idea that has yet to be thoroughly exploited. Most attempts at such unification have used Lisp or traditional languages, such as Pascal. This paper describes the command and programming language EZ, which attempts to unify command and programming languages by using high-level string-processing concepts, such as those in SNOBOL4 and Icon. EZ has particularly simple data abstractions that attempt to bridge the gap between the data abstractions of command languages and those of programming languages. This is accomplished by type fusion, which pushes the differences between some classes of types, such as strings and text files, out of the language and into the implementation. The language, its use, and its implementation are described.

Journal ArticleDOI
Darrel C. Ince1
TL;DR: This paper describes a software tool, written in Pascal, which allows a programmer to interactively develop programs in a top‐down fashion.
Abstract: Top-down design and programming methods have become well established in both commercial and academic environments. However, a programmer using such methods faces a number of organizational difficulties. This paper describes a software tool, written in Pascal, which eliminates these difficulties. It allows a programmer to interactively develop programs in a top-down fashion.

Journal ArticleDOI
TL;DR: In this paper, the authors present a survey of programming as design in Architectural Education: Vol. 37, No. 2, No 2, pp. 5-11, 1983.
Abstract: (1983). Programming as Design. Journal of Architectural Education: Vol. 37, No. 2, pp. 5-11.

Proceedings ArticleDOI
24 Jan 1983
TL;DR: A programming language, Viron, is exhibited that capitalizes on five paradigm shifts in programming language design, namely Effect to Entity, Serial to Parallel, Partition Types to Predicate Types, Computable to Definable, and Syntactic Consistency to Semantic Consistsency.
Abstract: We describe five paradigm shifts in programming language design, some old and some relatively new, namely Effect to Entity, Serial to Parallel, Partition Types to Predicate Types, Computable to Definable, and Syntactic Consistency to Semantic Consistency. We argue for the adoption of each. We exhibit a programming language, Viron, that capitalizes on these shifts.

Proceedings Article
G. Guiho1
08 Aug 1983
TL;DR: It is concluded that all the concepts treated in this paper must be contained in one way or another in any automatic programming system, however this necessitates further study in such theoretical fields as Abstract Data Type Theory, Specification languages, Theorem provers or proof cheekers and rule rewriting systems.
Abstract: In this paper we first try to characterize one meaning of automatic programming We consider it to be one part of the Programming environment related to Artificial Intelligence techniques We then illustrate an automatic programning process, on a simple example, using an Abstract Data Type theory to which we add the not ion of schemes which are particularly useful in program derivation from Abstract Type decomposition We conclude that all the concepts treated in this paper must be contained in one way or another in any automatic programming system However this necessitates further study in such theoretical fields as Abstract Data Type Theory, Specification languages, Theorem provers or proof cheekers and rule rewriting systems

Book ChapterDOI
06 Jun 1983
TL;DR: A propositional programming language for probabilistic program schemes is defined and the equational properties of the programs thus arising are studied.
Abstract: We define a propositional programming language for probabilistic program schemes and study the equational properties of the programs thus arising.

Proceedings Article
01 Jan 1983
TL;DR: The role played by knowledge of the task domain seems to be at least as important, both for the usability of an automatic programming system and for the feasibility of building one which works on non-trivial problems.
Abstract: Most work in automatic programming has focused primarily on the roles of deduction and programming knowledge However, the role played by knowledge of the task domain seems to be at least as important, both for the usability of an automatic programming system and for the feasibility of building one which works on non-trivial problems This perspective has evolved during the course of a variety of studies over the last several years, including detailed examination of existing software for a particular domain (quantitative interpretation of oil well logs) and the implementation of an experimental automatic programming system for that domain The importance of domain knowledge has two important implications: a primary goal of automatic programming research should be to characterize the programming process for specific domains; and a crucial issue to be addressed in these characterizations is the interaction of domain and programming knowledge during program synthesis

Journal ArticleDOI
TL;DR: The goal of this work is to introduce the concepts and mechanisms of abstraction, modularization and parameterization into logic programming, which is one of the preliminary steps toward creating a kernel language for fifth generation computer systems.
Abstract: In knowledge information processing, the structuring of knowledge and algorithms is one of the key issues. The goal of this work is to introduce the concepts and mechanisms of abstraction, modularization and parameterization into logic programming, which is one of the preliminary steps toward creating a kernel language for fifth generation computer systems.