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… 
Ensuring Termination in ESFP
TLDR
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
TLDR
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
TLDR
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)
TLDR
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
TLDR
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
TLDR
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
TLDR
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
TLDR
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
  • D. Turner
  • Computer Science
    J. Univers. Comput. Sci.
  • 2004
TLDR
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
TLDR
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
TLDR
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.
A Theory of Type Polymorphism in Programming
  • R. Milner
  • Computer Science
    J. Comput. Syst. Sci.
  • 1978
On the productivity of recursive list definitions
TLDR
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
TLDR
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
TLDR
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
TLDR
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
TLDR
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
  • S. Thompson
  • Computer Science
    International computer science series
  • 1996
TLDR
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
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
TLDR
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.
...
...