Ensuring Streams Flow
@inproceedings{Telford1997EnsuringSF, title={Ensuring Streams Flow}, author={Alastair J. Telford and David Turner}, booktitle={AMAST}, year={1997} }
It is our aim to develop an elementary strong functional programming (ESFP) system. To be useful, ESFP should include structures such as streams which can be computationally unwound infinitely often. We describe a syntactic analysis to ensure that infinitely proceeding structures, which we shall term codata, are productive. This analysis is an extension of the check for guardedness that has been used with definitions over coinductive types in Martin-Lof's type theory and in the calculus of…
46 Citations
Ensuring Termination in ESFP
- Computer ScienceJ. Univers. Comput. Sci.
- 2000
This work exhibits a powerful termination analysis technique which it is demonstrated can be extended to partial functions, and shows here that similar ideas can be applied in the dual case to check whether recursive function de nitions are strongly normalising.
V->M: A Virtual Machine for Strict Evaluation of (Co)Recursive Functions
- Computer ScienceIFL
- 2004
A virtual machine with suitable cycle handling primitives and operational semantics to implement strict evaluation of corecursive functions is presented, and the impact on calling conventions and definition constructs is discussed.
Beating the Productivity Checker Using Embedded Languages
- Computer SciencePAR
- 2010
This paper gives a method for turning a productive program into a guarded program by defining a problem-specific language as a data type, writing the program in the problemspecific language, and writing a guarded interpreter for this language.
Representing Contractive Functions on Streams (Extended Version)
- Computer Science
- 2011
A sound and complete representation theorem for contractive functions on streams is given, the use of this theorem is illustrated as a practical means to produce well-defined streams, and the efficiency of the resulting definitions can be improved using another representation ofcontractive functions.
A semantical analysis of structural recursion
- Computer Science
- 2002
It is shown that from foetus output the authors can actually conclude that the function terminates, and a general soundness theorem allows us to conclude that each term accepted by the foetus system actually terminates.
Representing Contractive Functions on Streams
- Computer Science
- 2011
A sound and complete representation theorem for contractive functions on streams is given, the use of this theorem is illustrated as a practical means to produce well-defined streams, and the efficiency of the resulting definitions can be improved using another representation ofcontractive functions.
The productivity of polymorphic stream equations and the composition of circular traversals
- Computer Science
- 2015
It is established that even two non-mutually recursive equations on unary stream functions are undecidable with complexity $Π_2^0$.
A predicative analysis of structural recursion
- Computer ScienceJournal of Functional Programming
- 2002
A language based upon lambda calculus with products, coproducts and strictly positive inductive types that allows the definition of recursive terms is introduced and it is shown that all structurally recursive terms are normalizing with respect to a given operational semantics.
Total Functional Programming
- Computer ScienceJ. Univers. Comput. Sci.
- 2004
This work considers a simple discipline of total functional programming designed to exclude the possibility of non-termination, which requires a type distinction between data and codata, which is potentially infinite.
Practical programming with total functions
- Computer Science
- 2010
These findings are the result of implementing a TFP compiler as a modification of the Glasgow Haskell Compiler (GHC), as well as a total standard library and a variety of total example programs.
References
SHOWING 1-10 OF 34 REFERENCES
Ensuring the Productivity of Infinite Structures
- Computer Science
- 1997
A syntactic analysis to ensure that infinitely proceeding structures, which the authors shall term codata , are productive is described, an extension of the check for guardedness that has been used with definitions over coinductive types in Martin-Lof's type theory and in the calculus of constructions.
On the productivity of recursive list definitions
- MathematicsACM Trans. Program. Lang. Syst.
- 1989
A calculus is developed that can be used in verifying that lists defined by l where l = f I are productive, and the power and the usefulness of the theory are demonstrated by several nontrivial examples.
Codifying Guarded Definitions with Recursive Schemes
- Computer ScienceTYPES
- 1994
An extension of the Calculus of Constructions with inductive and coinductive types which allows a more direct description of recursive definitions and develops a general method to codify a fix point definition satisfying them using well-known recursive schemes, like primitive recursion and co-recursion.
Infinite Objects in Type Theory
- Computer ScienceTYPES
- 1993
According to this analysis, the proof expressions should have the same structure as the program expressions of a pure functional lazy language: variable, constructor, application, abstraction, case expressions, and local let expressions.
Why Functional Programming Matters
- Computer ScienceComput. J.
- 1989
This paper shows that two features of functional languages in particular, higher-order functions and lazy evaluation, can contribute significantly to modularity.
Elementary Strong Functional Programming
- Computer ScienceFPLE
- 1995
This work proposes an elementary discipline of strong functional programming, in which all computations terminate, and introduces a type distinction between data, known to be finite, and codata, which is potentially infinite.
Haskell - the craft of functional programming
- Computer ScienceInternational computer science series
- 1996
The second edition of Haskell: The Craft of Functional Programming is essential reading for beginners to functional programming and newcomers to the Haskell programming language, with an emphasis on software engineering principles.
Miranda: A Non-Strict Functional language with Polymorphic Types
- Computer ScienceFPCA
- 1985
data types Many of the data types which in other languages would have to be expressed as abstract data types can be represented in Miranda as algebraic data types with associated laws. Nevertheless…
Walther Recursion
- Computer ScienceCADE
- 1996
This work simplifies Walther's calculus and gives a syntactic criterion on deenitions which guarantees termination, which generalizes primitive recursion and handles most of the examples given by Walther.