Results 1  10
of
19
Inductive Graphs and Functional Graph Algorithms
, 2001
"... We propose a new style of writing graph algorithms in functional languages which is based on an alternative view of graphs as inductively defined data types. We show how this graph model can be implemented efficiently, and then we demonstrate how graph algorithms can be succinctly given by recursive ..."
Abstract

Cited by 21 (2 self)
 Add to MetaCart
We propose a new style of writing graph algorithms in functional languages which is based on an alternative view of graphs as inductively defined data types. We show how this graph model can be implemented efficiently, and then we demonstrate how graph algorithms can be succinctly given by recursive function definitions based on the inductive graph view. We also regard this as a contribution to the teaching of algorithms and data structures in functional languages since we can use the functionalstyle graph algorithms instead of the imperative algorithms that are dominant today. Keywords: Graphs in Functional Languages, Recursive Graph Algorithms, Teaching Graph Algorithms in Functional Languages
Single Assignment C  Functional Programming Using Imperative Style
 In John Glauert (Ed.): Proceedings of the 6th International Workshop on the Implementation of Functional Languages. University of East Anglia
, 1994
"... This paper proposes a new functional programming language called Sac (Single Assignment C) which tries to combine the best of two worlds: the efficiency and portability of C (or Fortran) and the concurrency deducable from the functional paradigm. The major objectives in the design of Sac comprise s ..."
Abstract

Cited by 18 (4 self)
 Add to MetaCart
(Show Context)
This paper proposes a new functional programming language called Sac (Single Assignment C) which tries to combine the best of two worlds: the efficiency and portability of C (or Fortran) and the concurrency deducable from the functional paradigm. The major objectives in the design of Sac comprise support for high performance concurrent scientific applications (number crunching), a module concept which allows for the integration of nonfuntional components, and a syntax as close as possible to C. 1 Introduction Functional programming languages did not yet find a broad acceptance by application programmers outside the functional community. The reasons for this situation are manifold and differ depending on the field of application. Of primary interest in this paper are scientific applications involving complex manipulations of arrays. For this class of applications the following criteria are the most important ones for the choice of a suitable language: ffl availability of primitive a...
Purely Functional RandomAccess Lists
 In Functional Programming Languages and Computer Architecture
, 1995
"... We present a new data structure, called a randomaccess list, that supports array lookup and update operations in O(log n) time, while simultaneously providing O(1) time list operations (cons, head, tail). A closer analysis of the array operations improves the bound to O(minfi; log ng) in the wor ..."
Abstract

Cited by 18 (2 self)
 Add to MetaCart
(Show Context)
We present a new data structure, called a randomaccess list, that supports array lookup and update operations in O(log n) time, while simultaneously providing O(1) time list operations (cons, head, tail). A closer analysis of the array operations improves the bound to O(minfi; log ng) in the worst case and O(log i) in the expected case, where i is the index of the desired element. Empirical evidence suggests that this data structure should be quite efficient in practice. 1 Introduction Lists are the primary data structure in every functional programmer 's toolbox. They are simple, convenient, and usually quite efficient. The main drawback of lists is that accessing the ith element requires O(i) time. In such situations, functional programmers often find themselves longing for the efficient random access of arrays. Unfortunately, arrays can be quite awkward to implement in a functional setting, where previous versions of the array must be available even after an update. Since arra...
Set Constraints for Destructive Array Update Optimization
, 1999
"... Destructive array update optimization is critical for writing scientific codes in functional languages. We present set constraints for an interprocedural update optimization that runs in polynomial time. This is a multipass optimization, involving interprocedural flow analyses for aliasing and live ..."
Abstract

Cited by 15 (1 self)
 Add to MetaCart
Destructive array update optimization is critical for writing scientific codes in functional languages. We present set constraints for an interprocedural update optimization that runs in polynomial time. This is a multipass optimization, involving interprocedural flow analyses for aliasing and liveness. We characterize and prove the soundness of these analyses using smallstep operational semantics. We also prove that any sound liveness analysis induces a correct program transformation.
Automatic accurate stack space and heap space analysis for highlevel languages
, 2000
"... This paper describes a general approach for automatic and accurate space and spacebound analyses for highlevel languages, considering stack space, heap allocation and live heap space usage of programs. The approach is based on program analysis and transformations and is fully automatic. The analys ..."
Abstract

Cited by 14 (7 self)
 Add to MetaCart
(Show Context)
This paper describes a general approach for automatic and accurate space and spacebound analyses for highlevel languages, considering stack space, heap allocation and live heap space usage of programs. The approach is based on program analysis and transformations and is fully automatic. The analyses produce accurate upper bounds in the presence of partially known input structures. The analyses have been implemented, and experimental results con rm the accuracy. 1
Stoltze: Efficient Distributed Memory Implementation of a Data Parallel Functional Language
 in Proceedings of PARLE 94, LNCS 817
, 1994
"... ..."
Single Assignment C  Entwurf und Implementierung einer CVariante mit spezieller Unterstützung shapeinvarianter ArrayOperationen
, 1996
"... ..."
Static Analysis for Safe Destructive Updates (Extended Abstract)
 Logic Based Program Synthesis and Transformation (LOPSTR 2001), volume 2372 of LNCS
, 2001
"... this paper is for a generic functional language and requires no prior knowledge of PVS. ..."
Abstract

Cited by 11 (1 self)
 Add to MetaCart
this paper is for a generic functional language and requires no prior knowledge of PVS.
The Naive Execution of Affine Recurrence Equations
 INTERNATIONAL CONFERENCE ON APPLICATIONSPECIFIC ARRAY PROCESSORS
, 1995
"... In recognition of the fundamental relation between regular arrays and systems of affine recurrence equations, the Alpha language was developed as the basis of a computer aided design methodology for regular array architectures. Alpha is used to initially specify algorithms at a very high algorith ..."
Abstract

Cited by 7 (4 self)
 Add to MetaCart
In recognition of the fundamental relation between regular arrays and systems of affine recurrence equations, the Alpha language was developed as the basis of a computer aided design methodology for regular array architectures. Alpha is used to initially specify algorithms at a very high algorithmic level. Regular array architecures can then be derived from the algorithmic specification using a transformational approach supported by the Alpha environment. This design methodology guarantees the final design to be correct by construction, assuming the initial algorithm was correct. In this paper, we address the problem of validating an initial specification. We demonstrate a translation methodolody which compiles Alpha into the imperative sequential language C. The Ccode may then be compiled and executed to test the specification. We show how an Alpha program can be naively implemented by viewing it as a set of monolithic arrays and their filling functions, implemented usin...
A formally verified sorting certifier
 IEEE Transactions on Computers
, 1997
"... ..."
(Show Context)