| R. Bird. Introduction to Functional Programming using Haskell. Prentice-Hall, 2nd edition, 1998. |
....uni cation increases the expressiveness, the applicability and improves the level of abstraction. This explains the interest in higher order systems such as higher order logics and higherorder deduction systems [And86,Pau94,GLM97,And01,Pfe01] higher order (functional) programming languages [BMS80,Tur85,Pau91,Bar90,Bir98], higherorder logic programming languages [Mil91,HKMN95] higher order rewriting [Nip91,Klo92,DJ90] and higher order uni cation [Hue75,Dow01] It is well known that second order uni cation hence higher order uni cation is undecidable ( Gol81,Far91,LV00a] Higher order uni cation ....
Richard Bird. Introduction to Functional Programming using Haskell. Prentice Hall, 1998.
....of the original sequence. So, as a rst step, we generalize tournament to a function build : Elem ] Set (Tree Elem ; Elem ] that satis es (t ; y) build x list t y = x ; heap t : This generalisation is an instance of a well known technique of program optimization called tupling [3] and constitutes the main inventive step of the derivation. Before tackling build let us rst express tournament in terms of build . f speci cation of tournament g list t = x ; heap t f [ is the unit of g list t [ x ; heap t Thus, tournament can be de ned as follows. ....
Richard Bird. Introduction to Functional Programming using Haskell. Prentice Hall Europe, London, 2nd edition, 1998.
....Such observational functions just return certain information about the data structure. So there also no abstraction function shows up on the pointer algorithm side of the specification. The example we use is elem that determines if an element is a member of a list or not. We will use Haskell [3] like notation to denote functional algorithms. A functional specification is given by: elem a [ false elem a (x:xs) a= x elem a xs Applying the method of [13] we use the equation elem p a p = elem a list(p) to specify a pointer implementation elem p of elem. Here and in the sequel we ....
R. Bird. Introduction to Functional Programming using Haskell. Prentice Hall Press, 1998. 2nd edition.
....is to teach programming as a craft in the context of a single programming paradigm, embodied in a single language. The science is limited to the chosen paradigm or language. Some popular paradigms are objectoriented programming [23, 26, 27, 16] imperative programming [24] functional programming [11, 19, 7, 14, 25], logic programming [33, 8] and concurrent imperative programming [4, 5] Only the textbooks on functional programming and concurrent imperative programming give a formal semantics. Some languages are Java [23, 26, 22, 6] C [34] Ei#el [27] Prolog [33, 8] Erlang [5] Objective Caml [10] and ....
Richard Bird. Introduction to Functional Programming using Haskell, Second Edition. Prentice Hall, 1998.
....introducing an accumulating parameter. We shall review the technique as applied to the familiar problem of list reversal before applying it to generalised folds. 3.2.1 Improving on naive list reversal Below is a naive program to reverse a list. It takes quadratic time in the length of the list [Bir98], as opposed to the ideal linear time. reverse : a] reverse [ reverse (x : xs) reverse xs) x ] The cause of the ine#ciency is the ( operation, which takes linear time in the length of its left argument. We prefer to build up lists using the ( operation, which takes ....
Richard S. Bird. Introduction to Functional Programming using Haskell. Prentice-Hall Series in Computer Science. Prentice-Hall Europe, London, UK, second edition, 1998.
....We use monads to model e#ects, following Moggi [63] Although by no means comprehensive, the reader may find it useful to skim over Appendix A, which contains a brief review of fixed point operators. We expect readers to be familiar with functional programming [35, 87] particularly Haskell [7, 68]. For the most part, we use Haskell simply as a syntactically beefed up version of # calculus [30] so familiarity with any functional language should be su#cient. A basic understanding of domain theoretic semantics of programming languages is necessary to follow the technical development [76, ....
....being preferable over those given by Equation 4.13. 4. 4 State State monads capture the notion of computations that depend on modifiable stores, providing safe access to imperative features [51, 52] A typical state monad, manipulating an internal state with type # , has the following structure [7, 91]: type ST # # = # return x = #s. x , s) g = #s. let (a , s # ) f s in g a s # 43 The corresponding value recursion operator is given by: ST # #) ST # # mfix # f = #s. let (a , s # ) f a s in (a, s # ) 4.14) The reason for the name will be clear in a moment. Remark 4.4.1 ....
[Article contains additional citation context not shown here]
Bird, R. S. Introduction to Functional Programming using Haskell, second ed. Prentice Hall Europe, London, 1998. (10, 42, 47, 101, 145)
....subsections. We give every FAN skeleton two di erent semantics: 1) a functional semantics which de nes the input output behavior, and (2) a more detailed operational semantics which speci es the opportunities of parallel execution. We provide the functional semantics formally, in Haskell [8], and the operational semantics informally (in a later section) Most Haskell de nitions are relegated to the appendix. 4 3.1 Computational data parallel skeletons The simplest computational data parallel skeleton, map, applies a function f to all elements of an array, and arranges the results ....
R. Bird. Introduction to Functional Programming using Haskell, 2nd edition. Series in Computer Science. Prentice Hall Europe, 1998.
.... However, two methodologies have emerged in the last decade to combine the side e#ect world of I O with the referentially transparent world of functional programming, namely the uniqueness type system of the programming language Clean [BS00] and the use of monads in the Haskell language [Gor94] Bir98, Chp 10, pp326 359] However, as a consequence of these developments, functional programs written in these languages now look very like imperative programs as evidenced by sample programs appearing later in this paper. This immediately raises concerns about the relative ease of reasoning ....
Richard Bird. Introduction to Functional Programming using Haskell. Series in Computer Science. Prentice Hall, second edition edition, 1998.
....or in a lazy evaluation framework in which the mini executive is implemented as a lazy interpreter. The monadic style representation of the semantics of NXP architecture s working memory follows the layered approach discussed in the previous subsection. By analogy with Haskell s I O monads [4], we introduce the following definition. Definition 4.2.2. The working memory monad W describes a computation as a series of channels paired with the value returned. type W b =#C 1 , C n , b# # :b b #x =## 1 , # n , x# (#) W b 1 (b 1 #WM b 2 ) b 2 k =let , csx n , ....
R. Bird, Introduction to functional programming using haskell, 2nd ed., Series in Computer Science, Prentice Hall, 1998.
....de nedness test for AGs. Our original goal was to derive Knuth s circularity test [12, 13] but we were surprised to discover a new test that is actually slightly more powerful than Knuth s. Notation and Semantic Framework Our notation is based on the notation of the functional language Haskell [4]. Although the de nitions given in Section 2 are valid Haskell, we do not restrict ourselves to Haskell s lazy semantics. Instead we merely assume that the computations are over a semantic domain in which the least xed points exist. This is so as not to rule out work such as Farrow s [9] in ....
....synthesised attributes of the children. The output attributes are the synthesised attributes of the parent and the inherited attributes of the children. The fact that we are using a single function does not mean that the attribute values have to be computed simultaneously. For example, in Haskell [4] attribute values would be evaluated on demand, due to the lazy semantics. In Farrow s model [9] attribute values are computed iteratively, so the function would be called several times. Repmin Repmin is encoded as a value of type AG as follows: repAG : AG Inh Syn repAG Root ( syns) ....
R. S. Bird. Introduction to Functional Programming using Haskell. Prentice Hall, 2 edition, 1998.
....we recapitulate the list monad and the notion of its algebras. The monad instance for lists uses the prelude functions concat and map. instance MMonad [ where munit x = x] mjoin = concat mmap = map The proofs of the basic monad identities for these functions are standard (see for example [7][Section 10.3] Every monad c comes equipped with the notion of (Eilenberg Moore) algebras [6] Section 10.4] which are functions c a a satisfying identities (A I) and (A II) above. For the list monad, Eilenberg Moore algebras malg : a] a are in one to one correspondence with monoid ....
R.S. Bird. Introduction to Functional Programming using Haskell. Prentice-Hall, second edition, 1998.
....complex graph transformations that involve rules to be limited to particular subgraphs of the host graph, or to deal with multiple copies or views of a matched subgraph. Both of these problems are well solved in the tree rewriting community by borrowing ideas from pure functional programming [2] and rule based programming [3] Tree rewriting languages such as TXL [4] on the other hand, excel at implementing complex transformations involving multiple copies and views of matched subtrees and application of different rulesets to different matched subtrees, at speeds orders of magnitude ....
Richard Bird, Introduction to Functional Programming Using Haskell, 2nd edition, Prentice Hall Europe (1998).
....of programming and the fundamentals of computing as a scientific discipline. In contrast to the first statement, little argument will probably arise over the last one. Nevertheless, when we, for example, have a closer look at two of the most popular textbooks for teaching Haskell to freshman [1, 6], we observe that (a) they concentrate on teaching functional programming as such and (b) they relegate some important topics of general interest to the backstage. The most obvious example of the latter is probably the treatment of I O. Given the pivotal role that I O has in programming, we ....
....of I O. Given the pivotal role that I O has in programming, we would surely expect it to be a central theme in any introductory programming class; and, in fact, the infamous Hello World program is often enough the first example that one finds in a programming textbook. Nevertheless, Bird [1] discusses I O in Chapter 10 (out of 12) and Thompson [6] discusses it in Chapter 18 (out of 20) In addition, when I O is covered, it is encumbered by advanced functional programming notions, such as monads, which to freshman probably does little in the way of promoting the practicability of ....
Richard Bird. Introduction to Functional Programming using Haskell. Prentice Hall Press, second edition, 1998.
....We also show that the notion of downwards accumulation developed by Gibbons is subsumed by our notion of accumulation. 1 Introduction often called accumulators [20, 5, 15] In functional programming, the notion of accumulation is usually associated with the so called accumulation technique [8, 4, 18, 3], which transforms recursive definitions by the introduction of additional arguments over which intermediate results are computed. The accumulation technique is strongly connected with the familiar procedure of generalization for induction that arises in the field of theorem proving [7, 1, 26] A ....
....F : F F F . This arrow encodes the constructors of the inductive type and turns out to be an isomorphism. Initiality permits to associate an operator with each inductive type, which is used to represent functions defined by structural recursion on that type. This operator, usually called fold [3] or catamorphism [27] is originated by the unique homomorphism that exists between the initial algebra in F and any other F algebra h : FA A. We shall denote it by fold F (h) F A. Fold is thus the unique arrow that makes the following equation hold: fold F (h) ffi in F = h ffi F fold F ....
[Article contains additional citation context not shown here]
R. Bird. Introduction to Functional Programming using Haskell (2nd edition). PrenticeHall, UK, 1998.
....semistructured and object oriented databases. For instance, similar techniques are used in the implementation of OQL [2] We differ from other presentations of nested relational algebra in that we make heavy use of list comprehensions, a standard notation in the functional programming community [1]. We find list comprehensions slighly easier to manipulate than the more traditional algebraic operators, but it is not hard to translate comprehensions into these operators (or vice versa) One important aspect of XML is not covered by traditional nested relational algebras, namely, the structure ....
....algebra with operators on regular expressions to capture this additional structure. The operators for regular expressions are also expressed with a comprehension notation, similar to that used for lists. Again, a similar technique is common in the functional programming community. Chapter 11 of [1] uses a do notation that is quite similar to our comprehensions. We use the functional programming language Haskell as a notation for presenting the algebra. This allows us to use a notation that is formal and concrete, without having to invent one from scratch. It also means you can download and ....
[Article contains additional citation context not shown here]
Richard Bird. Introduction to Functional Programming using Haskell. Prentice Hall, 1998.
....method on the BMF data parallel programming model [Bir87, Ski94] though the method itself is not limited to the BMF model. We choose it because BMF can provide us a concise way to describe both programs and transformation of programs. Those who are familiar with the functional language Haskell [JH99, Bir98] should have no problem in understanding the programs in this paper. From the notational view point, the main di erence is that we use more symbols or special brackets to shorten the expressions so that manipulation of expressions can be performed in a more clear way. Functions. Function ....
R.S. Bird. Introduction to Functional Programming using Haskell. Prentice Hall, 1998.
....Nevertheless, our aim in these lectures is to provide a formal derivation of basic algorithms for coding and decoding. Our development of arithmetic coding makes heavy use of the algebraic laws of folds and unfolds. Although much of the general theory of folds and unfolds is well known, see [3, 6], we will need one or two novel results. One concerns a new pattern of computation, which we call streaming. In streaming, elements of an output list are produced as soon as they are determined. This may sound like lazy evaluation but it is actually quite di#erent. 2 Arithmetic coding, ....
....property: for a strict function h we have h [ e h (x : xs) fx(hxs) There is a close relationship between foldl and foldr , captured in part by the following two theorems. As the names of the theorems suggest, we are not telling the whole story here. Theorem 8 (First Duality Theorem [3]) If f is associative with unit e, then foldl f e xs = foldr f e xs for all finite lists xs. Theorem 9 (Third Homomorphism Theorem [7] If both h = foldl f 1 e and h = foldr f 2 e, then there is an associative f with unit e such that h = foldr f e. From Theorem 8 and Exercise 2, we have foldl ....
R. S. Bird. Introduction to Functional Programming using Haskell. International Series in Computer Science. Prentice Hall, 1998.
....rst writes a program which may be inecient but is guaranteed correct, which can be considered as a speci cation. Here, eciency of a function means the number of reduction steps for evaluating the function when implementing the function in some functional language such as Haskell [PJH99, Bir98] ML [MTHM97, Pau96] or Scheme [ADH 98, AwJS96] Program derivation is performed by applying certain transformation rule to the function in each stage and nally an ecient function will be obtained. Generally program derivation is not done mechanically since there are several possible ....
....to excute obtained script is available, which makes it easy to debug. 6.2. 1 Structure of automatic generation system In this section, we show a structure and implementration of the automatic generation system for MMP, which is implemented using a functional programming language Haskell [PJH99, Bir98] Structure of the system The system consists of two layers. The above layer is for high level description of transformation strategy, which is described by a language based on CCP [TH00] Section 6.2.2) CCP has higher order matching, so it is possible to describe a wide range of ....
[Article contains additional citation context not shown here]
Richard Bird. Introduction to Functional Programming using Haskell (second edition). Prentice Hall, 1998.
No context found.
R. Bird. Introduction to Functional Programming using Haskell. Prentice-Hall, 2nd edition, 1998.
No context found.
Richard S. Bird. Introduction to Functional Programming Using Haskell.Prentice- Hall, 1998.
No context found.
R. S. Bird, Introduction to Functional Programming Using Haskell, PrenticeHall, 1998.
No context found.
Bird, R.: Introduction to Functional Programming using Haskell (second edition), Prentice Hall, 1998.
No context found.
R. Bird. Introduction to Functional Programming using Haskell. Prentice-Hall, Inc., 2nd edition, 1998.
No context found.
Richard Bird. Introduction to Functional Programming using Haskell. Prentice-Hall, Inc., 2nd edition, 1998.
No context found.
R. Bird. Introduction to Functional Programming using Haskell. Prentice Hall, 1998.
No context found.
R. Bird, Introduction to Functional Programming Using Haskell, Prentice Hall, 1998.
No context found.
Bird, R.: Introduction to Functional Programming using Haskell. Prentice Hall (1998)
No context found.
R. Bird. Introduction to Functional Programming Using Haskell, 2nd Ed. Prentice Hall Press, 1998.
No context found.
R. Bird, Introduction to Functional Programming using Haskell, Prentice-Hall, New York (1998).
No context found.
R. Bird, Introduction to Functional Programming using Haskell (second edition), Prentice Hall, 1998.
No context found.
R. Bird, Introduction to functional programming using Haskell, 2nd. edition, Prentice Hall, 1998.
No context found.
Richard S. Bird. Introduction to Functional Programming Using Haskell.Prentice- Hall, 1998.
No context found.
Richard S. Bird. Introduction to Functional Programming Using Haskell. PrenticeHall, 1998.
No context found.
R.S. Bird. Introduction to Functional Programming using Haskell. Prentice Hall, 1998.
No context found.
Bird, R.: Introduction to Functional Programming using Haskell. Prentice Hall (1998)
No context found.
R. Bird. Introduction to Functional Programming using Haskell. Prentice Hall, 1998.
No context found.
Richard Bird. Introduction to functional programming using Haskell. Pearson Education, Harlow, second edition, 1998.
No context found.
R. J. Bird. Introduction to Functional Programming using Haskell. Prentice-Hall Series in Computer Science. Prentice-Hall Europe, London, UK, second edition, 1998.
No context found.
Bird, R.: Introduction to Functional Programming using Haskell (second edition). Prentice Hall (1998)
No context found.
Richard Bird. Introduction to Functional Programming using Haskell (2nd edition). Prentice Hall, 1998.
No context found.
Bird, R.: Introduction to Functional Programming using Haskell (2nd edition). Prentice Hall (1998)
No context found.
R. S. Bird and P. Wadler. An Introduction to Functional Programming using Haskell. Prentice-Hall, 1998.
No context found.
R. Bird. Introduction to Functional Programming using Haskell, second edition, Prentice Hall Europe, 1998, ISBN 0-13-484346-0.
No context found.
Bird, R.: Introduction to Functional Programming using Haskell (2nd edition). Prentice Hall (1998)
No context found.
Richard Bird. Introduction to Functional Programming using Haskell. Prentice Hall Europe, London, 2nd edition, 1998.
No context found.
Bird, R.: Introduction to Functional Programming using Haskell (second edition). Prentice Hall (1998)
No context found.
Richard Bird. Introduction to Functional Programming using Haskell. Prentice Hall Europe, London, 2nd edition, 1998.
No context found.
R. Bird. Introduction to Functional Programming using Haskell, second edition. Prentice Hall Europe, Essex, England, 1998.
No context found.
Richard Bird. Introduction to Functional Programming using Haskell. Prentice Hall Europe, London, 2nd edition, 1998.
No context found.
R. S. Bird. Introduction to Functional Programming using Haskell. Prentice Hall, 1998.
First 50 documents Next 50
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