Results 21 -
28 of
28
Functional Programming using CAML Light
, 1995
"... These course notes represent an introduction to functional programming. They have been written while the author was teaching at the University of Salerno (Italy) during spring 1990. These notes can be used for teaching functional programming to students who already had a first contact with Computer ..."
Abstract
- Add to MetaCart
These course notes represent an introduction to functional programming. They have been written while the author was teaching at the University of Salerno (Italy) during spring 1990. These notes can be used for teaching functional programming to students who already had a first contact with Computer Science. However, no prerequisite is strictly required. Through the study of the CAML functional programming, we present polymorphic type synthesis implemented by Milner's algorithm. We also present a simple execution model for functional languages: a simplified version of the Categorical Abstract Machine (CAM). These notes end by the complete prototyping of a simple functional language. ii Contents 1 Introduction 1 I Functional Programming 3 2 Functional languages 5 2.1 History of functional languages : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 6 2.2 The ML family : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 6 2.3 The Miranda family : :...
Functional programming using Caml Light
, 1995
"... ion : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 82 III A complete example 85 12 ASL: A Small Language 87 12.1 ASL abstract syntax trees : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 87 12.2 Parsing ASL programs : : : : : : : : : : : : : : : : ..."
Abstract
- Add to MetaCart
ion : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 82 III A complete example 85 12 ASL: A Small Language 87 12.1 ASL abstract syntax trees : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 87 12.2 Parsing ASL programs : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 88 13 Untyped semantics of ASL programs 93 13.1 Semantic values : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 93 13.2 Semantic functions : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 94 13.3 Examples : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 95 14 Encoding recursion 97 14.1 Fixpoint combinators : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 97 14.2 Recursion as a primitive construct : : : : : : : : : : : : : : : : : : : : : : : : : : : : 98 CONTENTS 3 15 Static typing, polymorphism and type synthesis 99 15.1 The type system : : ...
Lambda-Calculus and Functional Programming
"... This paper deals with the problem of a program that is essentially the same over any of several types but which, in the older imperative languages must be rewritten for each separate type. For example, a sort routine may be written with essentially the same code except for the types for integers, bo ..."
Abstract
- Add to MetaCart
This paper deals with the problem of a program that is essentially the same over any of several types but which, in the older imperative languages must be rewritten for each separate type. For example, a sort routine may be written with essentially the same code except for the types for integers, booleans, and strings. It is clearly desirable to have a method of writing a piece of code that can accept the specific type as an argument. Milner developed his ideas in terms of type assignment to lambda-terms. It is based on a result due originally to Curry (Curry 1969) and Hindley (Hindley 1969) known as the principal type-scheme theorem, which says that (assuming that the typing assumptions are sufficiently wellbehaved) every term has a principal type-scheme, which is a type-scheme such that every other type-scheme which can be proved for the given term is obtained by a substitution of types for type variables. This use of type schemes allows a kind of generality over all types, which is known as polymorphism.
Language Design Issues in Supporting Process-Oriented Computation in Persistent Environments
"... The problems of shared access to large bodies of information raise difficulties in the understanding and semantics of concurrency, distribution and stability. When the information is held in a persistent object store, these difficulties of understanding are extended to the interaction of the concept ..."
Abstract
- Add to MetaCart
The problems of shared access to large bodies of information raise difficulties in the understanding and semantics of concurrency, distribution and stability. When the information is held in a persistent object store, these difficulties of understanding are extended to the interaction of the concepts of persistence and store with those above. Some of the difficulty is in deciding at what level the architecture or language operates, be it hardware or software. Other difficulties arise in the complexity of the problems of concurrency. In this paper we identify these difficulties and clarify them with regard to database programming language design. We propose a model of concurrency that may be used as a solution to the problems. It is based on the rendezvous of Ada and integrated with a polymorphic type system with inheritance. This yields a processoriented approach to system construction that has much in common with the objectoriented approach. We will demonstrate the facilities of the ...
Parallel graph reduction for divide-and-conquer applications† Part I- program transformations
"... Aproposal is made to base parallel evaluation of functional programs on graph reduction combined with a form of string reduction that avoids duplication of work. Pure graph reduction poses some rather difficult problems to implement on a parallel reduction machine, but with certain restrictions, par ..."
Abstract
- Add to MetaCart
Aproposal is made to base parallel evaluation of functional programs on graph reduction combined with a form of string reduction that avoids duplication of work. Pure graph reduction poses some rather difficult problems to implement on a parallel reduction machine, but with certain restrictions, parallel evaluation becomes feasible. The restrictions manifest themselves in the class of application programs that may benefit from a speedup due to parallel evaluation. Two transformations are required to obtain a suitable version of such programs for the class of architectures considered. It is conceivable that programming tools can be developed to assist the programmer in applying the transformations, but we have not investigated such possibilities. To demonstrate the viability of the method we present four application programs with a complexity ranging from quick sort to a simulation of the tidal wav es inthe North sea. Ke y words: divide-and-conquer parallel algorithms parallel graph reduction reduction strategy program annotation program transformation job lifting
Bracket Abstraction Preserves Typability A formal proof of Diller–algorithm–C in PVS
"... Abstract. Bracket abstraction is an algorithm that transforms lambda expressions into combinator terms. There are several versions of this algorithm depending on the actual set of combinators that is used. Most of them have been proven correct with respect to the operational semantics. In this paper ..."
Abstract
- Add to MetaCart
Abstract. Bracket abstraction is an algorithm that transforms lambda expressions into combinator terms. There are several versions of this algorithm depending on the actual set of combinators that is used. Most of them have been proven correct with respect to the operational semantics. In this paper we focus on typability. We present a fully machine verified proof of the property that bracket abstraction preserves types; the types assigned to an expression before and after performing bracket abstraction are identical. To our knowledge, this is the first time that (1) such proof has been given, and (2) the proof is verified by a theorem prover. The theorem prover used in the development of the proof is PVS. 1
Pnnted m Great Britain Pergamon Journal ~ Ltd INTERPRETERS FROM FUNCTIONS AND GRAMMARS
, 1985
"... Abstract--The addition of context free grammar rules to a functional language simplifies the construction of interpreters from denotationaI semantic language definitions. Functional abstraction over grammar rules enables the specification and processing of context sensitive language syntax aspects i ..."
Abstract
- Add to MetaCart
Abstract--The addition of context free grammar rules to a functional language simplifies the construction of interpreters from denotationaI semantic language definitions. Functional abstraction over grammar rules enables the specification and processing of context sensitive language syntax aspects in a functional style.
Socio-PLT: Principles for Programming Language Adoption
"... Why do some programming languages fail and others succeed? What does the answer tell us about programming language design, implementation, and principles? To help answer these and other questions, we argue for a sociologicallygrounded programming language theory: socio-PLT. Researchers in the social ..."
Abstract
- Add to MetaCart
Why do some programming languages fail and others succeed? What does the answer tell us about programming language design, implementation, and principles? To help answer these and other questions, we argue for a sociologicallygrounded programming language theory: socio-PLT. Researchers in the social sciences have studied adoption in many contexts. We show how their findings are applicable to programming language design. For example, many programming language features provide benefits that programmers cannot directly or immediately observe and therefore may not find compelling. From clean water to safe sex, the health community has long examined how to surmount similar observability barriers. We use such results from outside of programming language theory to frame a research agenda that should help us understand the social foundations of languages. Finally, we examine implications of our approach, such as for the design space of language features and the assessment of scientific research into programming languages. 1.

