Abstract:
Compare first-order functional programs with higher-order programs allowing functions as function parameters. Can the the first program class solve fewer problems than the second? The answer is no: both classes are Turing complete, meaning that they can compute all partial recursive functions. In particular, higher-order values may be first-order simulated by use of the list constructor "cons" to build function closures. This paper uses complexity theory to prove some expressivity results about small programming languages that are less than Turing complete. Complexity classes of decision problems are used to characterize the expressive power of functional programming language features. An example: second-order programs are more powerful than first-order, since a function f of type [Bool]-?Bool is computable by a cons-free first-order functional program if and only if f is in ptime, whereas f is computable by a cons-free second-order program if and only if f is in exptime. Exact chara...
Citations
|
167
|
The Formal Semantics of Programming Languages: An Introduction
– WINSKEL
- 1993
|
|
143
|
A new recursion-theoretic characterization of the polytime functions
– Bellantoni, Cook
- 1992
|
|
103
|
The intrinsic computational difficulty of functions
– Cobham
- 1962
|
|
66
|
Toward logic tailored for computational complexity
– GUREVICH
- 1984
|
|
65
|
The complexity of computing
– Savage
- 1987
|
|
60
|
Computability and Complexity from a Programming Perspective. Foundations of Computing
– Jones
- 1997
|
|
55
|
Programming in an integrated functional and logic language
– Lloyd
- 1998
|
|
51
|
Feasible Functions
– Gurevich
- 1993
|
|
37
|
Expressibility as a complexity measure: Results and directions
– Immerman
- 1987
|
|
35
|
Some classes of recursive functions
– Grzegorczyk
- 1953
|
|
35
|
Elementary strong functional programming
– Turner
- 1995
|
|
33
|
A tutorial on the universality and expressiveness of fold
– Hutton
- 1999
|
|
30
|
Descriptive characterizations of computational complexity
– Leivant
- 1989
|
|
29
|
Lambda-calculus characterizations of poly-time
– Leivant, Marion
- 1993
|
|
28
|
Denotational Semantics
– Schmidt
- 1986
|
|
20
|
Polynomial computability and recursivity in finite domains. Elektronische Informationsverarbeitung und Kybernetik
– Sazonov
- 1980
|
|
16
|
Predicative recurrence and computational complexity IV: Predicative functionals and poly-space
– Leivant, Marion
|
|
15
|
Characterizing complexity classes by higher type primitive recursive definitions
– Goerdt
- 1992
|
|
15
|
Type systems for polynomial-time computation, Habilitation thesis
– Hofmann
- 1999
|
|
12
|
Pure versus impure lisp
– Pippenger
- 1996
|
|
10
|
logsp ace and ptime characterized by programming languages. The or etic al Computer Scienc e
– Jones
- 1998
|
|
9
|
Subrecursion as a basis for a feasible programming language
– Voda
- 1995
|
|
6
|
Characterizing complexity classes by general recursive de nitions in higher types
– Goerdt
- 1989
|
|
6
|
Finite Model Theory in the Simply Typed Lambda Calculus
– Hillebrand
- 1994
|
|
6
|
Recursion versus iteration at higher-orders
– Kfoury
- 1997
|
|
4
|
On the expressive power of finitely typed and universally polymorphic recursive procedures
– Kfoury, Tiuryn, et al.
- 1992
|
|
2
|
On the expressive power of simply typed and let-polymorphic lambda calculi
– Hillebrand
- 1996
|
|
1
|
A.Turing machines and the spectra of first-order formulae with equality
– Jones, Selman
- 1974
|
|
1
|
The hierarchy of functional programs
– Kfoury, Tiuryn, et al.
- 1987
|
|
1
|
Applicative control and computational complexity. Unpublished manuscript
– Leivant
- 1999
|
|
1
|
Time analysis of lazy versus eager evaluation
– Neergaard
- 1999
|
|
1
|
Comparative schematology. MIT A.I. Lab Technical Memo no. 201 (also
– Paterson, Hewitt
- 1970
|
|
1
|
On the expressive power of simply typed and letThe Expressive Power of Higher-order Types or, Life without CONS 39 polymorphic lambda calculi
– Hillebrand, Kanellakis
- 1996
|