| Turner D.A. SASL Language Manual. University of St. Andrews (1976). |
....was LISP (LISt Processing) McC60] which was imperative but had a purely functional subset. ISWIM (If you See What I Mean) Lan66] followed LISP and was developed to overcome LISP s over reliance on lists, poor storage allocation and excessive bracketing. SASL (St. Andrews Standard Language) Tur75] was weakly typed and used lists as its only datatype. A second version of SASL was later developed including pattern matching and lazy constructors. Hope [BMS80] is a pure functional language which provides strong typing and a polymorphic higher order type system. ML (Meta Language) was ....
D. A. Turner. SASL Language Manual. Univ. of St. Andrews, CS Dept., St. Andrews, 1975.
....where the first two occurrences of are pointers referring to the A behind the third occurrence. In this way lambda expressions become dags (directed acyclic graphs) 10 Based on the idea of graph reduction, using carefully chosen combinators as primitives, the experimental language SASL, see [115] and [116] was one of the first implemented lazy functional languages. The notion of graph reduction was extended by Turner by implementing the fixed point combinator (one of the primitives) as a cyclic graph. Cyclic graphs were already described in [119] but were not used there. Like LISP, the ....
D. A. Turner, The SASL language manual, 1976.
....typed lambda calculus, discharges only occur at the use of the intro rule. Let us investigate the character of the T 1 system by studying the typing of a program that cannot be typed in the simply typed lambda calculus. The following tautology checking function from the SASL language manual [Tur76] will not type in ML. However, as shown by Nordstrom, Petersson, and Smith [NPS90] the taut function can be typed with dependent product types. 4 taut 0 f = f taut (succ k) f = taut k (f true) taut k (f false) The principle difficulty in reconstructing a type for taut is that the type ....
David A. Turner. SASL language manual. Technical report, University of St. Andrews, 1976.
....or by the run time system. Dynamic type checking occurs when the run time system executes code to ensure that the data is of the correct type. This typically occurs even in so called statically checked languages with read statements and in projections out of a union. Some languages such as SASL[14] deliberately choose run time type checking to facilitate polymorphism. The binding mechanisms described above can be summarised in the following table. Static Typing Static Typing Dynamic Typing Dynamic Typing Static Scoping Dynamic Scoping Static Scoping Dynamic Scoping Static R value 1 2 3 ....
Turner, D.A. "SASL language manual". University of St.Andrews CS/79/3 (1979).
....have two conceptual problems. The first is how to impose context on the unbounded name space. The second is how to specify concurrent activity, that is separate threads of control. There are many different styles of concurrency in modern programming languages. The applicative languages such as SASL[18] have implicit concurrency due to the fact that they are referentially transparent. This style of concurrency is transparent to the user and will merely add speed to the execution of the programs. It is difficult to see how the applicative languages can make full use of a persistent store since ....
. Turner, D.A. SASL language manual. University of St.Andrews CS/79/3 (1979).
....newer programming languages have been developed that use more sophisticated type systems and also reduce the potential for spurious errors. Some examples of these newer programming languages are Ada[ada83] CLU[lis81] Galileo[alb85b] KRC[tur82] ML[mil85] Salgol [mor82] PS algol[psa88] and SASL[tur79]. Each of these programming languages provide one or more of the following features: a) abstract data types, b) first class procedure values, c) type inheritance, d) the explicit initialisation of all data before it is used, e) automatic bounds checking on indexing operations and f) ....
Turner, D.A. SASL language manual. University of St.Andrews CS/79/3, Scotland, 1979.
....where the first two occurrences of are pointers referring to the A behind the third occurrence. In this way lambda expressions become dags (directed acyclic graphs) 10 Based on the idea of graph reduction, using carefully chosen combinators as primitives, the experimental language SASL, see Turner [1976] and [1971] was one of the first implemented lazy functional languages. The notion of graph reduction was extended by Turner by implementing the fixed point combinator (one of the primitives) as a cyclic graph. Cyclic graphs were already described in Wadsworth [1971] but were not used there. ....
Turner, D.A. [1976] The SASL language manual.
....languages in this family use lazy evaluation (i.e. the argument of a function is evaluated if and when the function needs its value arguments are passed unevaluated to functions) They also use Milner s type system. Languages belonging to the Miranda family find their origin in the SASL language [34] (1976) developed by D. Turner. SASL and its successors (KRC [35] 1981, Miranda [36] 1985 and Haskell [15] 1990) use sets of mutually recursive equations as programs. These equations are written in a script (collection of declarations) and the user may evaluate expressions using values defined in ....
D. Turner. SASL language manual. Technical report, St Andrews University, 1976.
....two stages in the Str analysis of the factorial function The first iteration of the Str rewriting terminates when the STR attribute has been calculated for all the edges. Factorial requires a second iteration to yield optimal strictness information. Our prototype compiler is written in SASL [19]. Compilation schemes are implemented as recursive functions over a list of nodes and attributes. The ordering of the nodes makes it possible to use ordinary pattern matching on lists instead of multisets. The number of nodes is hardly affected by the compilation schemes (constant folding may ....
D. A. Turner, SASL language manual, Computing Laboratory, Univ. of Kent at Canterbury, Technical report, Aug. 1979.
....to the previous output stream will be resumed as soon as the end of the output. Output diversions may be arbitrarily nested, although the operating system will impose a limit on the number of files that may be open at any given time. This mechanism has been copied from the implementation of SASL [15, 16]. identifier type description showi : int [char] list of characters representing int argument using sprintf format d showf : float [char] list of characters representing float argument using sprintf format f showd : double [char] list of characters representing double argument using ....
D. A. Turner. SASL language manual. Technical report, Computing Laboratory, Univ. of Kent at Canterbury, Aug 1979.
.... eferences. 163 Appendix I . 174 1 Chapter 1 Introduction Lazy functional programming systems [Turn79a,Bird88,Davi92,Huda92] combine programming by the definition and application of functions with lazy evaluation where subexpressions are only evaluated if their value is required for the program s result. All programs are expressions and execution consists of the evaluation of the expression represented by the program. ....
....property that they have no free variables and are called combinators. Source programs were first transformed to ones involving just combinators and constants. This new implementation technique for functional languages based on combinators [Turn79b] underlied implementations of the languages SASL [Turn79a], KRC [Turn82] and Miranda [Turn85] The technique involves combinator based graph reduction and these languages employ lazy evaluation semantics in which values are only computed when needed. In SASL programs, definitions were made using equations which resembled mathematics. KRC introduced ZF ....
[Article contains additional citation context not shown here]
Turner, D. A., SASL Language Manual, University of St. Andrews Dept. of Comp. Sci., Report CS/79/3, 1979
....part of 3.7, Phi Id(N;0;n) Id(N;0;n) fg) equal to zero(n) 3. If n reduces to an expression k such that Phi N (k) By induction hypothesis we have that Phi Id(N;0;k) Id(N;0;k) fg) equal to zero(k) Then by lemma 3. 5 Phi Id(N;0;n) Id(N;0;n) fg) equal to zero(n) Example 2: In sasl [23] there is a function that checks if a boolean function of n variables is tautology or not. The function is de ned as: taut 0 f = f taut n f = taut(n Gamma 1) f true) and taut(n Gamma 1) f false) This function cannot be typed in most languages but in type theory with one universe this is ....
David Turner. sasl Language Manual. Technical report, University
....languages in this family use lazy evaluation (i.e. the argument of a function is evaluated if and when the function needs its value arguments are passed unevaluated to functions) They also use Milner s type system. Languages belonging to the Miranda family find their origin in the SASL language [34] (1976) developed by D. Turner. SASL and its successors (KRC [35] 1981, Miranda [36] 1985 and Haskell [15] 1990) use sets of mutually recursive equations as programs. These equations are written in a script (collection of declarations) and the user may evaluate expressions using values defined in ....
D. Turner. SASL language manual. Technical report, St Andrews University, 1976.
....language construct analogous to an attribute grammar, called case rec (in analogy with the case expression in LML and SML) Section 7 discusses circular attribute definitions. Section 8 concludes the paper. We assume that the reader has some familiarity with lazy functional languages such as SASL [Tur76], Miranda [Tur85] or Lazy ML. Program examples in this paper will be given in Lazy ML (LML) a lazy and completely functional variant of ML [GMW79] Like SML [Mil84] LML has borrowed the concrete data types and pattern matching from HOPE [BMS80] LML is the source language for a compiler that ....
D. A. Turner. sasl Language Manual. Technical report, University of St. Andrews, 1976.
....known as an L value binding [stra67] In this kind of binding, the location does not change although different values may be stored in it. Sometimes, bindings are made to values which are immutable, this type of binding is known as an R value binding. Applicative languages such as SASL [tur79] only have this kind of binding. Bindings may be instantiated statically by the compiler or dynamically by the run time system. If systems are bound statically many errors may be detected early ( at compile time ) Some languages designers consider this safety element so important that their ....
Turner, D.A. SASL language manual. University of St.Andrews CS/79/3 (1979).
....at all, can be done statically by a compiler or by the run time system. Dynamic type checking occurs when the run time system executes code to ensure that the data is of the correct type. This typically occurs in read statements and in projections out of a union. Some languages such as SASL[16] deliberately choose run time type checking to facilitate polymorphism. The binding mechanisms can be categorised by the following table. Static Typing Static Typing Dynamic Typing Dynamic Typing Static Scoping Dynamic Scoping Static Scoping Dynamic Scoping Static R value 1 2 3 4 Static L value 5 ....
Turner, D.A. SASL language manual. University of St.Andrews CS/79/3 (1979).
....the output t will be returned when s is given as input. The mutual exclusiveness of the different cases in function definitions guarantees that s is equal to at most one constructor term t. It is well known that a lazy ( outermost fair , call by name ) evaluation strategy as employed in Sasl [38] or Miranda [39] is required for completeness, and that an eager (innermost, call by value ) strategy as in Lisp or ML can lead to an infinite computation, without ever finding t. Thus, an interpreter programmed in a lazy language will terminate whenever the computation it is mimicking ....
David A. Turner. SASL language manual. Technical report, University of Kent, Canterbury, U.K., 1976.
....with the following program to enumerate the primes using The Sieve of Eratosthenes. primes = sieve [2. sieve (p:xs) p : sieve [x x xs, x mod p 0] This little program, or something very like it, has been part of the stock intrade of lazy list processing for over twenty years (Turner, 1975). For all its dainty appearance, however, the program makes brutal demands on the reduction machine. Suppose we compute p k , the k th prime. Sample reduction counts y are: p 100 : 36,558 p 1000 : 3,124,142 p 5000 : 75,951,324 Why is the computation so costly There are two main reasons for ....
Turner, D. A. (1975). SASL language manual. Tech. rept. CS/75/1. Department of Computational Science, University of St. Andrews.
....All languages in this family use lazy evaluation (i.e. the argument of a function is evaluated if and when the function needs its value arguments are passed unevaluated to functions) They also use Milner s type system. Languages belonging to the Miranda family find their origin in the SASL [Turner, 1976] 1976) language developed by D. Turner. SASL and its successors (KRC [Turner, 1982] 1981, Miranda [Turner, 1985] 1985 and Haskell [Hudak and Wadler, 1990] 1990) use sets of mutually recursive equations as programs. These equations are written in a script (collection of declarations) and the user may ....
D. Turner. SASL language manual. Technical report, St Andrews University, 1976.
....in which the data to be processed resides on backing store which may be much larger than the main store of the 2 machine executing the program. It will be seen later how persistence can be added to lazy functional languages. 1. 2 Laziness A number of functional programming languages (e.g. SASL[Turn79], Miranda[Turn85] Haskell[Huda90] exploit so called lazy semantics[Frie76,Hend76] which has the attractive features that: No value is ever computed unless it needs to be. Every value, if computed, is computed once only. Some programs will terminate with a result, when evaluated lazily, ....
Turner, D. A., SASL Language Manual, University of St. Andrews Dept. of Comp. Sci., Report CS/79/3, 1979
No context found.
Turner D.A. SASL Language Manual. University of St. Andrews (1976).
No context found.
D.A.Turner, `SASL Language Manual', UKC Computing Lab. Report, The University of Kent at Canterbury, 1983. Revised Version: Nov/83.
No context found.
Turner D.A. SASL Language Manual. University of St. Andrews (1976).
Online articles have much greater impact More about CiteSeer.IST Add search form to your site Submit documents Feedback
CiteSeer.IST - Copyright Penn State and NEC