108 citations found. Retrieving documents...
R. Bird. Introduction to Functional Programming using Haskell. Prentice-Hall, 2nd edition, 1998.

 Home/Search   Document Not in Database   Summary   Related Articles   Check  

This paper is cited in the following contexts:

First 50 documents  Next 50

Decidability of Bounded Higher-Order Unification - Schmidt-Schauß, Schulz (2002)   (1 citation)  (Correct)

....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.


Constructing Tournament Representations: An exercise in pointwise.. - Hinze (2002)   (4 citations)  (Correct)

....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.


Case Studies For The Derivation Of Pointer Algorithms - Ehm (2003)   (Correct)

....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.


Teaching Programming with - The Kernel Language   (Correct)

....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.


Generic Operations on Nested Datatypes - Bayley (2001)   (Correct)

....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.


Value Recursion in Monadic Computations - Erkok (2002)   (2 citations)  (Correct)

....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)


Towards Parallel Programming by Transformation.. - Aldinucci.. (2001)   (2 citations)  (Correct)

....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.


Comparing Proofs about I/O in Three Programming Paradigms - Butterfield, Strong (2001)   (Correct)

.... 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.


Monadic Style Control Constructs For Inference Systems - Chauvet (2002)   (Correct)

....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.


A Functional Semantics of Attribute Grammars - Backhouse (2002)   (Correct)

....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.


Tuning Task Granularity and Data Locality of Data Parallel .. - Loidl, Trinder, Butz (2001)   (1 citation)  (Correct)

....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.


GXL - A Graph Transformation Language with Scoping and.. - Sarkar, Blostein, Cordy (1998)   (Correct)

....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).


The Pros and Cons of Teaching Purely Functional Programming .. - Chakravarty, Keller   (Correct)

....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.


Generic Accumulations - Pardo (2002)   (5 citations)  (Correct)

....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.


A Data Model and Algebra for XML Query - Fernández, Siméon..   (Correct)

....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.


An Accumulative Parallel Skeleton for All - Hu, al. (2001)   (1 citation)  Self-citation (Bird)   (Correct)

....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.


Arithmetic Coding with Folds and Unfolds - Bird, Gibbons (2003)   (6 citations)  Self-citation (Bird)   (Correct)

....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.


Generation of Efficient Algorithms for Maximum Marking Problems - Sasano   Self-citation (Bird)   (Correct)

....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.


Relational Analysis of Algebraic Datatypes - Viktor Kuncak Massachusetts (2005)   (Correct)

No context found.

R. Bird. Introduction to Functional Programming using Haskell. Prentice-Hall, 2nd edition, 1998.


Streaming Representation-Changers - Gibbons (2004)   (Correct)

No context found.

Richard S. Bird. Introduction to Functional Programming Using Haskell.Prentice- Hall, 1998.


Metamorphisms: Streaming Representation-Changers - Gibbons (2005)   (Correct)

No context found.

R. S. Bird, Introduction to Functional Programming Using Haskell, PrenticeHall, 1998.


Proof Methods for Corecursive Programs - Gibbons, Hutton (2005)   (1 citation)  (Correct)

No context found.

Bird, R.: Introduction to Functional Programming using Haskell (second edition), Prentice Hall, 1998.


Relational Analysis of Algebraic Datatypes - Kuncak, Jackson (2005)   (Correct)

No context found.

R. Bird. Introduction to Functional Programming using Haskell. Prentice-Hall, Inc., 2nd edition, 1998.


On Relational Analysis of Algebraic Datatypes - Kuncak, Jackson   (Correct)

No context found.

Richard Bird. Introduction to Functional Programming using Haskell. Prentice-Hall, Inc., 2nd edition, 1998.


Proving and Disproving Termination of Higher-Order.. - Giesl, Thiemann.. (2005)   (Correct)

No context found.

R. Bird. Introduction to Functional Programming using Haskell. Prentice Hall, 1998.


Combining Effects: Sum and Tensor - Hyland, Plotkin, Power   (Correct)

No context found.

R. Bird, Introduction to Functional Programming Using Haskell, Prentice Hall, 1998.


Bidirectionalizing Tree Transformations - Zhenjiang Hu Kento   (Correct)

No context found.

Bird, R.: Introduction to Functional Programming using Haskell. Prentice Hall (1998)


Towards CNC Programming Using Haskell - Arroyo, Ochoa, Silva, Vidal (2004)   (Correct)

No context found.

R. Bird. Introduction to Functional Programming Using Haskell, 2nd Ed. Prentice Hall Press, 1998.


A New Parallel Skeleton for General Accumulative Computations - Iwasaki, Hu (2004)   (Correct)

No context found.

R. Bird, Introduction to Functional Programming using Haskell, Prentice-Hall, New York (1998).


Deterministic Second-order Patterns - Yokoyama, Hu, Takeichi (2004)   (Correct)

No context found.

R. Bird, Introduction to Functional Programming using Haskell (second edition), Prentice Hall, 1998.


Functional Programming Concepts and Straight-line.. - Bruno, Heintz.. (2003)   (Correct)

No context found.

R. Bird, Introduction to functional programming using Haskell, 2nd. edition, Prentice Hall, 1998.


Streaming Representation-Changers - Gibbons (2004)   (Correct)

No context found.

Richard S. Bird. Introduction to Functional Programming Using Haskell.Prentice- Hall, 1998.


Streaming Algorithms (Extended Abstract) - Gibbons   (Correct)

No context found.

Richard S. Bird. Introduction to Functional Programming Using Haskell. PrenticeHall, 1998.


A Programmable Editor for Developing Structured Documents.. - Hu, Mu, Takeichi (2004)   (1 citation)  (Correct)

No context found.

R.S. Bird. Introduction to Functional Programming using Haskell. Prentice Hall, 1998.


A Fusion-Embedded Skeleton Library - Matsuzaki, Kakehi, Iwasaki, Hu..   (Correct)

No context found.

Bird, R.: Introduction to Functional Programming using Haskell. Prentice Hall (1998)


Model Checking Object-Z Classes: - Some Experiments With (2001)   (Correct)

No context found.

R. Bird. Introduction to Functional Programming using Haskell. Prentice Hall, 1998.


Java as a Functional Programming Language - Anton Setzer Dept   (Correct)

No context found.

Richard Bird. Introduction to functional programming using Haskell. Pearson Education, Harlow, second edition, 1998.


M. Dowse, A. Butterfield, M. van Eekelen , M. de Mol , R.. - Nijmegen Institute For   (Correct)

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.


Deterministic Higher-order Patterns for Program Transformation - Yokoyama, Hu, Takeichi (2003)   (Correct)

No context found.

Bird, R.: Introduction to Functional Programming using Haskell (second edition). Prentice Hall (1998)


An Algebraic Interface for GETA Search Engine - Murakami, Hu, Nishioka..   (Correct)

No context found.

Richard Bird. Introduction to Functional Programming using Haskell (2nd edition). Prentice Hall, 1998.


An Efficient Staging Algorithm for Binding-Time Analysis - Murakami, Hu, Kakehi..   (Correct)

No context found.

Bird, R.: Introduction to Functional Programming using Haskell (2nd edition). Prentice Hall (1998)


An Application of Functional Programming: Quilting - Curtis   (Correct)

No context found.

R. S. Bird and P. Wadler. An Introduction to Functional Programming using Haskell. Prentice-Hall, 1998.


Theorem Proving for Functional Programmers - Sparkle Functional Theorem (2002)   (Correct)

No context found.

R. Bird. Introduction to Functional Programming using Haskell, second edition, Prentice Hall Europe, 1998, ISBN 0-13-484346-0.


An Efficient Staging Algorithm for Binding-Time Analysis - Murakami, Hu, Kakehi..   (Correct)

No context found.

Bird, R.: Introduction to Functional Programming using Haskell (2nd edition). Prentice Hall (1998)


Generic Haskell: Practice and Theory - Hinze, Jeuring (2003)   (2 citations)  (Correct)

No context found.

Richard Bird. Introduction to Functional Programming using Haskell. Prentice Hall Europe, London, 2nd edition, 1998.


Deterministic Second-order Patterns in Program Transformation - Yokoyama, Hu, Takeichi   (Correct)

No context found.

Bird, R.: Introduction to Functional Programming using Haskell (second edition). Prentice Hall (1998)


Generic Haskell: Practice and Theory - Hinze, Jeuring (2003)   (3 citations)  (Correct)

No context found.

Richard Bird. Introduction to Functional Programming using Haskell. Prentice Hall Europe, London, 2nd edition, 1998.


Matrix Factorization Using a Block-Recursive Structure and.. - Frens   (Correct)

No context found.

R. Bird. Introduction to Functional Programming using Haskell, second edition. Prentice Hall Europe, Essex, England, 1998.


Polytypic Programming with Ease - Hinze (2001)   (8 citations)  (Correct)

No context found.

Richard Bird. Introduction to Functional Programming using Haskell. Prentice Hall Europe, London, 2nd edition, 1998.


A Calculational Approach to Program Inversion - Linacre (2003)   (1 citation)  (Correct)

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