• Documents
  • Authors
  • Tables
  • Other Seers ▼
    RefSeer AckSeer CollabSeer SeerSeer
  • Log in
  • Sign up
  • MetaCart

CiteSeerX logo

Advanced Search Include Citations
Advanced Search Include Citations | Disambiguate

The implementation of the Gofer functional programming system (1994)

by M P Jones
Add To MetaCart

Tools

Sorted by:
Results 11 - 20 of 42
Next 10 →

Benchmarking Implementations of Functional Languages with "Pseudoknot", a Float-Intensive Benchmark

by Pieter Hartel, Marc Feeley, Martin Alt, Lennart Augustsson, Peter Baumann, Marcel Beemster, Emmanuel Chailloux, Christine H. Flood, Wolfgang Grieskamp - Journal of Functional Programming , 1993
"... Over 25 implementations of different functional languages are benchmarked using the same program, a floatingpoint intensive application taken from molecular biology. The principal aspects studied are compile time and 1 Dept. of Computer Systems, Univ. of Amsterdam, Kruislaan 403, 1098 SJ Amsterdam, ..."
Abstract - Cited by 16 (9 self) - Add to MetaCart
Over 25 implementations of different functional languages are benchmarked using the same program, a floatingpoint intensive application taken from molecular biology. The principal aspects studied are compile time and 1 Dept. of Computer Systems, Univ. of Amsterdam, Kruislaan 403, 1098 SJ Amsterdam, The Netherlands, e-mail: pieter@fwi.uva.nl 2 D'epart. d'informatique et r.o., Univ. de Montr'eal, succursale centre-ville, Montr'eal H3C 3J7, Canada, e-mail: feeley@iro.umontreal.ca 3 Informatik, Universitat des Saarlandes, 66041 Saarbrucken 11, Germany, e-mail: alt@cs.uni-sb.de 4 Dept. of Computer Systems, Chalmers Univ. of Technology, 412 96 Goteborg, Sweden, e-mail: augustss@cs.chalmers.se 5 Dept. of Computer Science, Univ. of Zurich, Winterthurerstr. 190, 8057 Zurich, Switzerland, e-mail: baumann@ifi.unizh.ch 6 Dept. of Computer Systems, Univ. of Amsterdam, Kruislaan 403, 1098 SJ Amsterdam, The Netherlands, e-mail: beemster@fwi.uva.nl 7 LIENS, URA 1327 du CNRS, ' Ecole Normale Sup'erieur...

Foundations for the Implementation of Higher-Order Subtyping

by Karl Crary , 1997
"... We show how to implement a calculus with higher-order subtyping and subkinding by replacing uses of implicit subsumption with explicit coercions. To ensure this can be done, a polymorphic function is adjusted to take, as an additional argument, a proof that its type constructor argument has the desi ..."
Abstract - Cited by 12 (6 self) - Add to MetaCart
We show how to implement a calculus with higher-order subtyping and subkinding by replacing uses of implicit subsumption with explicit coercions. To ensure this can be done, a polymorphic function is adjusted to take, as an additional argument, a proof that its type constructor argument has the desired kind. Such a proof is extracted from the derivation of a kinding judgement and may in turn require proof coercions, which are extracted from subkinding judgements. This technique is formalized as a type-directed translation from a calculus of higher-order subtyping to a subtyping-free calculus. This translation generalizes an existing result for second-order subtyping calculi (such as F ). We also discuss two interpretations of subtyping, one that views it as type inclusion and another that views it as the existence of a well-behaved coercion, and we show, by a type-theoretic construction, that our translation is the minimum consequence of shifting from the inclusion interpretation to th...

Polynomial Polymorphism

by C. Barry Jay - Proceedings of the Eighteenth Australasian Computer Science Conference: Glenelg, South Australia 1--3 February , 1995
"... Inductive types, such as lists and trees, have a uniform semantic description, both of the types themselves and the folding algorithms that construct homomorphisms out of them. Though implementations have been able to give a uniform description of the types, this has not been true of folding, since ..."
Abstract - Cited by 12 (4 self) - Add to MetaCart
Inductive types, such as lists and trees, have a uniform semantic description, both of the types themselves and the folding algorithms that construct homomorphisms out of them. Though implementations have been able to give a uniform description of the types, this has not been true of folding, since there has not been a uniform mechanism for finding the sub-expressions (the sub-lists or sub-trees, etc.) to which recursion applies. Polynomial types overcome this problem by distinguishing the indeterminate of the polynomial (on which the recursion occurs) from its coefficients. Further, this uniformity is recognised by the type system, which is able to treat fld as a (shape) polymorphic constant of the -calculus. These ideas have been implemented in a language P2. Key words types, polynomials, polymorphism, folding, shape, P2. 1 Introduction The use of initial algebras to describe inductive data types, such as lists and trees, produces a uniform method for describing a large class of ...

Buddha - A Declarative Debugger for Haskell

by Bernard Pope, Supervisor Lee Naish , 1998
"... Due to their reliance on the execution order of programs, traditional debugging techniques are not well suited to locating the source of logical errors in programs written in lazy functional languages. We describe the implementation of a declarative debugger for the programming language Haskell, whi ..."
Abstract - Cited by 12 (1 self) - Add to MetaCart
Due to their reliance on the execution order of programs, traditional debugging techniques are not well suited to locating the source of logical errors in programs written in lazy functional languages. We describe the implementation of a declarative debugger for the programming language Haskell, which assists the location of logical errors based on the declarative semantics of program definitions. The implementation is based on the Hugs interpreter, and both solidifies previous work in the field and extends it to incorporate features typical of many modern lazy functional languages. Contents 1 Introduction 1 2 Haskell 2 2.1 Background : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 2 2.2 Haskell is a lazy language : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 2 2.3 Haskell is a higher--order language : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 4 2.4 Haskell is purely functional : : : : : : : : : : :...

TEA: Automatically proving termination of programs in a non-strict higher-order functional language

by Sven Eric Panitz, Manfred Schmidt-Schauß - IN PROC. 4TH INT. STATIC ANALYSIS SYMP , 1997
"... We present TEA, a tool that is able to detect termination of functions written in a non-strict high-level functional programming language like Haskell. Since almost every compiler for lazy functional languages transforms programs into a functional core language, we use such a core language as the so ..."
Abstract - Cited by 12 (0 self) - Add to MetaCart
We present TEA, a tool that is able to detect termination of functions written in a non-strict high-level functional programming language like Haskell. Since almost every compiler for lazy functional languages transforms programs into a functional core language, we use such a core language as the source language for the analysis. TEA is able to detect two kinds of termination: nf-termination and lazy termination. Intuitively, nf-termination of f means that given arguments a i in normal form, the normal order evaluation of the expression f a1 : : : an terminates with a normal form. If an expression evaluates to an infinite normal form, we will call it lazy terminating. In order to prove nf-termination of an expression, TEA tries to generate a preclosed tableau using abstract reduction and path analysis. The preclosed tableau issues a set of ordering constraints, which have to be satisfied by some Noetherian ordering. A subsystem is called to generate this Noetherian ordering, and to v...

The UniForM Concurrency Toolkit and its Extensions to Concurrent Haskell

by Einar W. Karlsen , 1997
"... . The UniForM Concurrency Toolkit is a comprehensive library of abstract data types for shared memory and message passing communication that extends Concurrent Haskell with a concept of dynamic types, thread identity, thread local state and selective communication as found in CML. Notable features o ..."
Abstract - Cited by 11 (6 self) - Add to MetaCart
. The UniForM Concurrency Toolkit is a comprehensive library of abstract data types for shared memory and message passing communication that extends Concurrent Haskell with a concept of dynamic types, thread identity, thread local state and selective communication as found in CML. Notable features of the toolkit are its support for reentrant monitors, interactors providing iterative choice and the uniform representation of internal channel events as well as external tool events of the environment in the form of first class synchronous event values. 1 Introduction The UniForM Concurrency ToolKit 1 has primarily been designed to support the development of reactive systems using Concurrent Haskell [PJGF96]. The toolkit provides, partially backed up by a class system, a number of archetypical shared memory abstractions such as semaphores, locks and shared variables. The most important contribution, however, is the concept of reentrant monitors, whose main advantage over MVar's is that r...

Disposable Memo Functions

by Byron Cook, John Launchbury - In Proceedings of the 1997 Haskell Workshop , 1997
"... We formalize the meaning of lazy memo-functions in Haskell with an extension to the lazy -calculus, Haskell's computational model. The semantics enable reasoning about memoization 's effect on space and time complexity. Based on the semantics, we present a prototype implementation that requires no c ..."
Abstract - Cited by 9 (0 self) - Add to MetaCart
We formalize the meaning of lazy memo-functions in Haskell with an extension to the lazy -calculus, Haskell's computational model. The semantics enable reasoning about memoization 's effect on space and time complexity. Based on the semantics, we present a prototype implementation that requires no changes to the garbage-collector; memo-tables are simply reclaimed when no references to them remain. 1 Introduction A memo-function remembers the arguments to which it has been applied, together with the result. If applied to a repeated argument, memo-functions return the cached answer rather than recomputing it from scratch. Memoization improves the time complexity of algorithms with repeated computations --- but can consume vast amounts of memory. Some implementations of memoization use heuristic cache replacement policies (such as LRU or FIFO) to manage memory. Although implementations try to minimize space consumption, in their essence, memo-functions trade better runtime performance f...

Putting the Spine back in the Spineless Tagless G-Machine: An Implementation of Resumable Black-Holes

by Alastair Reid - In Proc. IFL'98 (selected papers), volume 1595 of LNCS , 1998
"... . Interrupt handling is a tricky business in lazy functional languages: we have to make sure that thunks that are being evaluated can be halted and later restarted if and when they are required. This is a particular problem for implementations which use black-holing. Black-Holing deliberately makes ..."
Abstract - Cited by 8 (2 self) - Add to MetaCart
. Interrupt handling is a tricky business in lazy functional languages: we have to make sure that thunks that are being evaluated can be halted and later restarted if and when they are required. This is a particular problem for implementations which use black-holing. Black-Holing deliberately makes it impossible to revert such thunks to their original state to avoid a serious space leak. Interactive Haskell implementations such as Hugs and hbi catch interrupts and avoid the problem by omitting or disabling black-holing. Batch mode Haskell implementations such as HBC and the Glasgow Haskell Compiler (GHC) avoid this problem by disabling black-holing or by providing no way to catch interrupts. This paper describes a modification to GHC's abstract machine (the Spineless Tagless G-Machine) which simultaneously supports both interrupts and black-holing. 1 Introduction Black-Holing [6] is an important technique for avoiding space leaks in lazy functional languages. When a program starts to ...

Matrix Inversion using Quadtrees Implemented in Gofer

by Jeremy Frens, David S. Wise , 1995
"... Using literate programming, complete Gofer code to invert a floating-point quadtree matrix is presented along with exposition. The code is a full implementation some of the algorithms presented in "UndulantBlock Pivoting and Integer-Preserving Matrix Inversion" [4] by the second author. CR categori ..."
Abstract - Cited by 7 (3 self) - Add to MetaCart
Using literate programming, complete Gofer code to invert a floating-point quadtree matrix is presented along with exposition. The code is a full implementation some of the algorithms presented in "UndulantBlock Pivoting and Integer-Preserving Matrix Inversion" [4] by the second author. CR categories and Subject Descriptors: G.1.3 [Numerical Linear Algebra]: Matrix inversion, Sparse and very large systems; E.1 [Data Structures]: Trees; D.1.1 [Applicative (Functional) Programming Techniques]; I.1.2 [Algebraic Manipulation]: Algebraic algorithms; D.2.7 [Distribution and Maintenance]: Documentation; C.1.2 [Multiple Data Stream Architectures (Multiprocessors)]: Parallel processors. General Term: Algorithms. Additional Key Words and Phrases: Gaussian elimination, block algorithm, undulant pivoting, LU factorization, quaternary trees, Haskell, literate programming. Contents 0 Introduction 1 0.1 Overview of this Report : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : ...

Deterministic Concurrency

by David Paul Carter - In Proceedings of the 1993 Glasgow Workshop on Functional Programming , 1993
"... Existing functional languages appear not to be suitable for implementing systems which are inherently concurrent, such as operating system environments. Adaptations to functional languages developed to support such applications have in the past always involved the introduction of non-determinism. ..."
Abstract - Cited by 7 (0 self) - Add to MetaCart
Existing functional languages appear not to be suitable for implementing systems which are inherently concurrent, such as operating system environments. Adaptations to functional languages developed to support such applications have in the past always involved the introduction of non-determinism.
The National Science Foundation
  • About CiteSeerX
  • Submit Documents
  • Privacy Policy
  • Help
  • Data
  • Source
  • Contact Us

Developed at and hosted by The College of Information Sciences and Technology

© 2007-2010 The Pennsylvania State University