## Elementary strong functional programming (1995)

Citations: | 43 - 0 self |

### BibTeX

@INPROCEEDINGS{Turner95elementarystrong,

author = {D. A. Turner and Canterbury Ct Nf},

title = {Elementary strong functional programming},

booktitle = {},

year = {1995},

pages = {1--13},

publisher = {Springer-Verlag}

}

### Years of Citing Articles

### OpenURL

### Abstract

Functional programming is a good idea, but we haven’t got it quite right yet. What we have been doing up to now is weak (or partial) functional programming. What we should be doing is strong (or total) functional programming- in which all computations terminate. We propose an elementary discipline of strong functional programming. A key feature of the discipline is that we introduce a type distinction between data, which is known to be finite, and codata, which is (potentially) infinite. 1 What is Functional Programming? It is widely agreed that functional programming languages make excellent introductory teaching vehicles for the basic concepts of computing. The wide range of topics covered in this symposium is evidence for that. But what is functional programming? Well, it is programming with functions, that much seems clear. But this really is not specific enough. The methods of denotational semantics show us

### Citations

1308 | Monads for functional programming
- Wadler
- 1995
(Show Context)
Citation Context ... y z) = refl (T a (refl z) (refl y)) {refl} = T a (refl (refl y)) (refl (refl z)) {refl} = T a y z {ex hypothesi} Example: the (co)map-iterate theorem The following theorem is from Bird & Wadler (see =-=[1]-=-, page 184). We have changed the name of map to comap because for us they are different functions. > iterate f x = x <> iterate f (f x) > comap f (a <> x) = f a <> comap f x Theorem iterate f (f x) = ... |

99 |
An overview of miranda
- Turner
- 1986
(Show Context)
Citation Context ... a functional language things are what we say they are, not something much more complicated in disguise. This is particularly apparent in the notational style represented by such languages as Miranda =-=[9]-=-, Haskell [4], and the functional subset of Standard ML [3]. We have (i) strong typing: the domain and codomain of each function is either stated in or inferable from the program text, and there is a ... |

65 |
et al. Report on the Programming Language Haskell
- Hudak, Jones, et al.
- 1992
(Show Context)
Citation Context ... language things are what we say they are, not something much more complicated in disguise. This is particularly apparent in the notational style represented by such languages as Miranda [9], Haskell =-=[4]-=-, and the functional subset of Standard ML [3]. We have (i) strong typing: the domain and codomain of each function is either stated in or inferable from the program text, and there is a syntactic dis... |

29 | Total Functional Programming
- Turner
- 2004
(Show Context)
Citation Context ...rter proofs of equations over infinite lists than either of the proof methods for this which have been developed in the theory of weak functional programming - namely partial object induction (Turner =-=[8]-=-) and the take-lemma (Bird [1]). The framework seems simpler than previous accounts of coinduction - see for example Pitts [5], because we are not working with domain theory and partial objects, but w... |

17 |
Laws in Miranda
- Thompson
(Show Context)
Citation Context ... non-terminating computations, which runs right through everything, and messes up all the details. For a discussion of the complexities that can arise in reasoning about Miranda programs see Thompson =-=[7]-=-. Similar complications arise for any of the functional languages in current use, the details depending on such matters as whether the language is strict or lazy. The thesis of this paper is as follow... |

10 |
On a hitherto unutilized extension of the finitary standpoint
- Gödel
- 1958
(Show Context)
Citation Context ...guage with higher order functions. IMPORTANT FACT: we are here working in a higher order language, so what we actually have are the primitive recursive functionals of finite type, as studied by Gödel =-=[2]-=- in his System T. These are known to include every recursive function whose totality can be proved in first order logic (starting from the usual axioms for the elementary data types, eg the Peano axio... |

4 |
Pitts “A Co-induction Principle for Recursively Defined Domains
- M
- 1994
(Show Context)
Citation Context ...on! To avoid a meaningless regress what one actually says is that anything obeying the above is a bisimulation and by bisimilarity we mean the largest such relation. For a fuller discussion see Pitts =-=[5]-=-. Taking as read this background understanding of how to avoid logical regress, we say that in general two pieces of codata are bisimilar if: 10s• their finite parts are equal, and • their infinite pa... |