| P. Hudak, `Conception, evolution, and application of functional programming languages', ACM Computing Surveys, 21, (3), 359--411 (1989). |
....for its own robustness [52] This means that algorithms that support the type system need to be adapted to be practically executable at run time. ML is an early and well known realization of a modern type system [32] 83] 89] It was the first language to use type inference in an integrated way [42], where the types of variables are not declared, but are rather inferred from how they are used. The compile time algorithms here are elegant, but it is not clear to me whether run time adaptations are practical. Many modern languages, including Java and C , use declared types rather than type ....
P. Hudak, "Conception, Evolution, and Application of Functional Programming Languages," ACM Computing Surveys, Vol. 21, No. 3, September 1989.
....Comparison With Other Languages There are many parallel machines in existence and various ways of programming them. Many parallel languages do not use an imperative style; rather, the parallelism is implicit in the way the computation is carried out, as in functional and logic languages [26, 27], or else is is left as a challenge for the compiler [28] As ParC is an imperative language with explicit control parallelism, we will only compare it with other languages of the same type. In a nutshell, ParC may be characterized as a language providing a shared memory, MIMD, asynchronous model ....
P. Hudak, `Conception, evolution, and application of functional programming languages'. ACM Comput. Surv. 21, 359-411 (1989).
....the flaws mentioned in the previous approach remain. A different approach is to use a programming paradigm that does not obscure parallelism and leaves parallelization to the compiler. Examples are dataflow languages (e.g. ID Nouveau [Arvind88] SISAL [Sked85] and functional languages (Haskell [Hudak89], Miranda [Turner 85] Crystal [Chen86] A problem regarding the execution efficiency of those languages is a.o. the single assignment nature, yielding much overhead when manipulating large data structures. Compilers for functional programs use graph rewriting techniques; by solving parts of the ....
P. Hudak, "Conception, evolution, and application of functional programming languages," ACM Computing Surveys, Vol. 21, no.3, September 1989, pp. 359-411.
....for its own robustness [50] This means that algorithms that support the type system need to be adapted to be practically executable at run time. ML is an early and well known realization of a modern type system [31] 81] 87] It was the first language to use type inference in an integrated way [41], where the types of variables are not declared, but are rather inferred from how they are used. The compile time algorithms here are elegant, but it is not clear to me whether run time adaptations are practical. Many modern languages, including Java and C , use declared types rather than type ....
P. Hudak, "Conception, Evolution, and Application of Functional Programming Languages," ACM Computing Surveys, Vol. 21, No. 3, September 1989.
....for its own robustness [49] This means that algorithms that support the type system need to be adapted to be practically executable at run time. ML is an early and well known realization of a modern type system [31] 81] 86] It was the first language to use type inference in an integrated way [41], where the types of variables are not declared, but are rather inferred from how they are used. The compile time algorithms here are elegant, but it is not clear to me whether run time adaptations are practical. Many modern languages, including Java and C , use declared types rather than type ....
P. Hudak, "Conception, Evolution, and Application of Functional Programming Languages," ACM Computing Surveys, Vol. 21, No. 3, September 1989.
.... [4, 15, 18, 26, 30, 35] program editing and development systems [10, 23, 32] code generator generators [14, 17, 19, 29] theorem provers [24] logic programming optimizers that attempt to replace unification with matching [27] and compilers for functional languages such as ML [34] and Haskell [22] that have equational function definitions. ################## 1. An earilier version of this paper appeared in[5] 2. The research of this author was partially supported by National Science Foundation grant CCR 9002428. 3. Part of this work was done while this author was a summer faculty ....
Hudak, P., "Conception, Evolution, and Application of Functional Programming Languages," ACM Computing Survey, vol. 21, no. 3, pp. 359-411, Sep. 1989.
....languages can be translated into VMPP program graphs. In order to make our arguments convincing, the languages we have selected represent a diverse group of parallel programming paradigms. The paradigms represented are the data parallel model [6] the object oriented model and the functional model [7]. We have chosen these models because they are dissimilar and each has a following in today s parallel programming community. The languages chosen and the techniques for translating their key constructs are detailed below. 5.1.1. Basic Translation Process For clarity we will first outline the ....
....all functions and expressions can be evaluated in parallel, subject only to the satisfaction of the data dependencies between them. The most common functional languages used in parallel processing are the dataflow languages. Dataflow languages are essentially a subset of the functional languages [7]. We have chosen SISAL as our example functional language. SISAL SISAL is a dataflow functional language, designed to support single assignment functional programming, particularly on parallel processors. SISAL differs from most other dataflow and functional languages because it supports ....
Paul Hudak, "Conception, Evolution, and Application of Functional Programming", ACM Computing Surveys, Vol. 21, No. 3, September 1989.
....are other well known examples. One distinguishes pure functional languages, where functions are mathematically pure, produce only one result, and do not have side effects, from others which allow side effects to varying degrees. A comprehensive survey and pointers to the literature can be found in [Hudak, 1989]. 4.1 Functions as Fundamental Building Blocks Functional programs consist of the application of functions to some values. The basic control structure is recursion. For example, a typical implementation of factorials in a language like Gofer [Jones, 1994; Thiemann, 1994] looks like this: fac n = ....
Hudak, P. "Conception, Evolution, and Application of Functional Programming Languages." ACM Computing Surveys 21 (3 1989): 359-411.
....When application order is ambiguous, application arrows are numbered according to priority, where lower numbers indicate higher priority. These numbers are left out of subsequent figures. 1 In this example, and in the treatment of lambda calculus in the next section, we rely on the survey by Hudak [10]. The reader is referred to this survey and its excellent and extensive bibliography for further information on the lambda calculus and its application in functional programming. The basic principle of the VEX expression evaluation is that the graphical expressions are elaborated until no further ....
....rewrite rules. We confine ourselves to the pure untyped lambda calculus. Additions to this lambda 2 A QuickTime animation of this evaluation may be found at http: soglio.colorado.edu Web vex.mov. calculus will be discussed in section 5. Our treatment of the textual calculus is the one given in [10]. This section will describe the graphical transformation rules informally. Space does not permit a description of the formal specification of VEX through transformation rules, but a more complete description appears in [6] using the same system employed to formally specify the semantics of VIPR ....
[Article contains additional citation context not shown here]
Hudak, P., "Conception, Evolution, and Application of Functional Programming Languages." Computing Surveys, 1989. 21(3): 359-411.
....existing units, and be able to reason about their programs in a rudimentary way. The FP paradigm is an ideal basis for a first language because of its simple evaluation model, the fact that everything is an expression, and because of referential transparency ( equals can be replaced by equals ) [Hudak 1989]. The absence of side effects in FP means that functions are more modular, easier to compose together, and more structured. Typically they have less bugs, and are easier to reason about. Given these advantages, it is surprising that FP still plays a minor role in the undergraduate teaching ....
....by modifying the lists given to them. 4.1.2 The List ADT in C The Miranda to C translation assumes that a Miranda expression is matched against a function s equations in a top to bottom order. This is a standard assumption in FP systems, the alternative being to allow only disjoint equations [Hudak 1989]. This ordering rule permits a series of equations for a function to be rephrased as a series of if then else statements in a C function. A more important assumption involves the kind of arguments that appear in Miranda and C functions. C can be viewed as a strict language since all the arguments ....
Hudak, P. 1989. `Conception, Evolution, and Application of Functional Programming Languages ', Computing Surveys, 21(3), September, pp.359-411.
....(Concurrent C) message passing, rendezvous synchronization (e.g. Ada) etc. Almost every programming paradigm on the other hand has been tuned or extended by language constructs to support parallel programming. So for the imperative and data flow paradigm [Perr 87] functional programming [Huda 89] programming in logic [Shap 89] the object oriented D6H 1 Rel 0.9 June 28 1994 Visual Parallel Programming PACT parallel programming [Yone 87] or distributed object oriented systems [Chin 91] At least imperative parallel languages are relatively easy to implement, and reflect to some extent ....
P. Hudak. "Conception, Evolution and Application of Functional Programming Languages". ACM Computing Surveys, Vol. 21, No. 3, pp. 359--411, Sep. 1989.
....designer or programmer must specify how the answer is computed, in addition to specifying what is computed. This distinction is similar to, but not the same as, the distinction between imperative and declarative models of programming made by the advocates of functional programming (for example, [Hud89]) 1.1.1 The Operational Paradigm The most successful paradigm for computer architecture and organization is the von Neumann model of the computer. The most important aspect of this model for our purposes is that the von Neumann machine has a state, corresponding to the contents of memory and of ....
.... are permitted to return functions and accept functions as arguments) lazy evaluation (arguments are evaluated only when needed) as opposed to eager evaluation (in which arguments are always evaluated before passing them to functions) pattern matching, and various kinds of data abstraction [Hud89]. Functional languages possess the property known as referential transparency, or equals may be replaced by equals ; this is a powerful tool for reasoning about and for transforming functional programs. In the dataflow paradigm, streams of data flow through a network of computational nodes; each ....
P. Hudak, "Conception, Evolution, and Application of Functional Programming Languages", ACM Computing Surveys, Vol 21, No 3, September 1989.
No context found.
P. Hudak, `Conception, evolution, and application of functional programming languages', ACM Computing Surveys, 21, (3), 359--411 (1989).
No context found.
P. Hudak, "Conception, Evolution and Application of Functional Programming Languages", ACM Computing Surveys 21(3), pp. 359-411 (September 1989).
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