Results 1  10
of
22
The Design and Implementation of Glasgow distributed Haskell
, 2000
"... This paper outlines the design and implementation of Glasgow distributed Haskell (GdH), a nonstrict distributed functional language. The language ..."
Abstract

Cited by 23 (9 self)
 Add to MetaCart
This paper outlines the design and implementation of Glasgow distributed Haskell (GdH), a nonstrict distributed functional language. The language
EasyCheck — Test Data for Free
, 2008
"... We present a lightweight, automated tool for specificationbased testing of declarative programs written in the functional logic programming language Curry and emphasize the usefulness of logic features in its implementation and use. Free variables, nondeterminism and encapsulated search turn out to ..."
Abstract

Cited by 13 (2 self)
 Add to MetaCart
We present a lightweight, automated tool for specificationbased testing of declarative programs written in the functional logic programming language Curry and emphasize the usefulness of logic features in its implementation and use. Free variables, nondeterminism and encapsulated search turn out to be elegant and powerful means to express testdata generation.
Efficient Combinator Parsers
 In Implementation of Functional Languages, LNCS
, 1998
"... . Parser combinators enable the construction of recursive descent parsers in a very clear and simple way. Unfortunately, the resulting parsers have a polynomial complexity and are far too slow for realistic inputs. We show how the speed of these parsers can be improved by one order of magnitude usin ..."
Abstract

Cited by 11 (0 self)
 Add to MetaCart
. Parser combinators enable the construction of recursive descent parsers in a very clear and simple way. Unfortunately, the resulting parsers have a polynomial complexity and are far too slow for realistic inputs. We show how the speed of these parsers can be improved by one order of magnitude using continuations. These continuations prevents the creation of intermediate data structures. Furthermore, by using an exclusive orcombinator instead of the ordinary orcombinator the complexity for deterministic parsers can be reduced from polynomial to linear. The combination of both improvements turn parser combinators from a beautiful toy to a practically applicable tool which can be used for real world applications. The improved parser combinators remain very easy to use and are still able to handle ambiguous grammars. 1 Introduction Parser combinators [3, 6, 5, 8] are a beautiful illustration of the use of higher order functions and currying. By using a small set of parser combinators ...
There and back again: arrows for invertible programming
 In Proceedings of the 2005 ACM SIGPLAN workshop on Haskell
, 2006
"... Invertible programming occurs in the area of data conversion where it is required that the conversion in one direction is the inverse of the other. For that purpose, we introduce bidirectional arrows (biarrows). The biarrow class is an extension of Haskell’s arrow class with an extra combinator tha ..."
Abstract

Cited by 8 (0 self)
 Add to MetaCart
Invertible programming occurs in the area of data conversion where it is required that the conversion in one direction is the inverse of the other. For that purpose, we introduce bidirectional arrows (biarrows). The biarrow class is an extension of Haskell’s arrow class with an extra combinator that changes the direction of computation. The advantage of the use of biarrows for invertible programming is the preservation of invertibility properties using the biarrow combinators. Programming with biarrows in a polytypic or generic way exploits this the most. Besides bidirectional polytypic examples, including invertible serialization, we give the definition of a monadic biarrow transformer, which we use to construct a bidirectional parser/pretty printer.
Geometric Modelling in Functional Style
 Proc. of the III LatinoAmerican Workshop on Functional Programming, CLAPF’99
, 1999
"... . Modelling of 3D objects is a venerable subdomain of the applied geometry, too often coded in a crude way, with elegance sacrificed for the sake of efficiency. We propose to exploit the modern lazy functional programming to generate 3D surfaces, insisting upon the genericity of the underlying mat ..."
Abstract

Cited by 5 (1 self)
 Add to MetaCart
. Modelling of 3D objects is a venerable subdomain of the applied geometry, too often coded in a crude way, with elegance sacrificed for the sake of efficiency. We propose to exploit the modern lazy functional programming to generate 3D surfaces, insisting upon the genericity of the underlying mathematics. We show how to generate easily the generalized sweeps thanks to the algorithmic differentiation procedures. The interest of this paper is mainly methodologic, but all solutions are practical, although they are extremely short. We show a simple but decent technique of parametrizing curves through their chordlength, using lazy series development. The relation between functional programming methods and the computer graphics world is concisely reviewed. 1 Introduction Being well adapted to the manipulation of abstractions, functional languages bridge the gap between the computer codes, and the realm of formal mathematical objects. This gap is still excessive, and may be harmful...
Currystyle types for nominal rewriting
, 2006
"... Abstract. We define a type inference system for Nominal Rewriting where the types associated to terms are polymorphic (built from a set of base data sorts, type variables, and userdefined type constructors). In contrast with standard term rewriting systems or the λcalculus, a typing environment fo ..."
Abstract

Cited by 5 (4 self)
 Add to MetaCart
Abstract. We define a type inference system for Nominal Rewriting where the types associated to terms are polymorphic (built from a set of base data sorts, type variables, and userdefined type constructors). In contrast with standard term rewriting systems or the λcalculus, a typing environment for nominal rewriting includes type information for atoms, variables and function symbols. We give a syntaxdirected system of typing rules associating types to terms, and show that every typable term has a principal type in a given environment. Type inference is decidable; moreover, rewriting preserves types when rules are typable.
Functional Coding of Differential Forms
 IN SCOTTISH WORKSHOP ON FP
, 1999
"... Algebraic computations in differential geometry have usually a strong "analytic" side, and symbolic formula crunching is heavily used, even if at the end, the user needs only numbers, or graphic visualization. We show how to implement in a simple way the domain of differential forms with the pve ..."
Abstract

Cited by 4 (1 self)
 Add to MetaCart
Algebraic computations in differential geometry have usually a strong "analytic" side, and symbolic formula crunching is heavily used, even if at the end, the user needs only numbers, or graphic visualization. We show how to implement in a simple way the domain of differential forms with the pvector algebra, Hodge "star" operator, and the differentiation. There is no explicit symbolic manipulation involved, we exploit only the "standard" mathematical operations in a generic way. Everything forms a local algebra coded in Haskell, and the differentiation algorithms heavily use the lazy evaluation. Some short examples are presented. This paper generalizes our onedimensional algorithmic differentiation formalism in functional sauce presented elsewhere.
Runtime System Level Fault Tolerance for a Distributed Functional Language
 IN SFP'00, UNIVERSITY OF ST
, 2000
"... Functional languages potentially oer benefits for distributed fault tolerance: many computations are pure, and hence have no sideeffects to be reversed during error recovery; moreover functional languages have a highlevel runtime system (RTS) where computations and data are readily manipulated. ..."
Abstract

Cited by 2 (2 self)
 Add to MetaCart
Functional languages potentially oer benefits for distributed fault tolerance: many computations are pure, and hence have no sideeffects to be reversed during error recovery; moreover functional languages have a highlevel runtime system (RTS) where computations and data are readily manipulated. We propose a new RTS level of fault tolerance for distributed functional languages, and outline a design for its implementation for the GdH language. The design distinguishes between pure and impure computations: impure computations must be recovered using conventional exceptionbased techniques, but the RTS attempts implicit recovery of pure computations.
Towards Runtime System Level Fault Tolerance for a Distributed Functional Language
 IN SFP’00 — SCOTTISH FUNCTIONAL PROGRAMMING WORKSHOP
, 2000
"... Distributed Fault Tolerance entails detecting errors, confining the damage caused, recovery from the errors, and providing continued service on a network of cooperating machines. Functional languages potentially offer benefits for distributed fault tolerance: many computations are pure, and hence h ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
Distributed Fault Tolerance entails detecting errors, confining the damage caused, recovery from the errors, and providing continued service on a network of cooperating machines. Functional languages potentially offer benefits for distributed fault tolerance: many computations are pure, and hence have no sideeffects to be reversed during error recovery. Moreover functional languages have a highlevel runtime system (RTS) where computations and data are readily manipulated. We propose a new RTS level of fault tolerance for distributed functional languages, and outline a design for its implementation for the GdH language. Glasgow distributed Haskell is a small extension to the Haskell language and the fault tolerance design utilises existing distributed graph reduction mechanisms. The design distinguishes between pure and impure computations; impure or side effecting computations must be recovered using conventional exceptionbased techniques, but the RTS attempts implicit backward recovery of pure computations.