Formal Methods within a Totally Functional Approach to Programming

Taking functional programming to its extremities in search of simplicity still requires integration with other development (e.g. formal) methods. Induction is the key to deriving and verifying functional programs, but can be simplified through packaging proofs with functions, particularly folds, on data (structures). Totally Functional Programming avoids the complexities of interpretation by directly representing data (structures) as platonic combinators - the functions characteristic to the data. The link between the two simplifications is that platonic combinators are a kind of partially-applied fold, which means that platonic combinators inherit fold-theoretic properties, but with some apparent simplifications due to the platonic combinator representation. However, despite observable behaviour within functional programming that suggests that TFP is widely-applicable, significant work remains before TFP as such could be widely adopted.

[1]  Graham Hutton,et al.  Parsing Using Combinators , 1989, Functional Programming.

[2]  Simon L. Peyton Jones,et al.  The Implementation of Functional Programming Languages , 1987 .

[3]  Robert Cartwright,et al.  Exact real arithmetic formulating real numbers as functions , 1990 .

[4]  Robin Milner,et al.  A Theory of Type Polymorphism in Programming , 1978, J. Comput. Syst. Sci..

[5]  Mark P. Jones,et al.  First-class polymorphism with type inference , 1997, POPL '97.

[6]  John C. Reynolds,et al.  Three Approaches to Type Structure , 1985, TAPSOFT, Vol.1.

[7]  Henk Barendregt,et al.  The Lambda Calculus: Its Syntax and Semantics , 1985 .

[8]  D. A. Turner,et al.  Miranda: A Non-Strict Functional language with Polymorphic Types , 1985, FPCA.

[9]  Alfred V. Aho,et al.  The Theory of Parsing, Translation, and Compiling , 1972 .

[10]  P. Bailes,et al.  A Formal Basis for the Perception of Programming as a Language Design Activity , 1994 .

[11]  Richard S. Bird,et al.  Introduction to functional programming , 1988, Prentice Hall International series in computer science.

[12]  John Hughes,et al.  Why Functional Programming Matters , 1989, Comput. J..

[13]  James S. Royer,et al.  Subrecursive Programming Systems , 1994, Progress in Theoretical Computer Science.

[14]  Hartmut Ehrig,et al.  Mathematical Foundations of Software Development , 1985, Lecture Notes in Computer Science.

[15]  P A Bailes PROGRAMMER AS LANGUAGE DESIGNER (TOWARDS A UNIFIED THEORY OF PROGRAMMING AND LANGUAGE DESIGN). , 1986 .

[16]  Tim Sheard,et al.  A fold for all seasons , 1993, FPCA '93.

[17]  John W. Backus,et al.  Can programming be liberated from the von Neumann style?: a functional style and its algebra of programs , 1978, CACM.

[18]  Graham Hutton,et al.  A tutorial on the universality and expressiveness of fold , 1999, Journal of Functional Programming.

[19]  Simon L. Peyton Jones,et al.  Imperative functional programming , 1993, POPL '93.

[20]  Karl-Heinz Niggl Momega Considered as a Programming Language , 1999, Ann. Pure Appl. Log..

[21]  James H. Cross,et al.  Reverse engineering and design recovery: a taxonomy , 1990, IEEE Software.

[22]  David Turner,et al.  Research topics in functional programming , 1990 .

[23]  D. A. Turner,et al.  Elementary Strong Functional Programming , 1995, FPLE.

[24]  Robert Tibshirani,et al.  An Introduction to the Bootstrap , 1994 .

[25]  Philip Wadler,et al.  Glasgow Workshop on Functional Programming , 1992 .

[26]  G.D. Plotkin,et al.  LCF Considered as a Programming Language , 1977, Theor. Comput. Sci..