Talk:FP (programming language)

Requested move
FP programming language → FP (programming language) – Conformance with WP naming conventions Cybercobra

FP is NOT a programming language
"FP" is not a programming language per se and the topic's name has to be modified (and the text clarified, natch).

"FP" is an approach at writing programs using functional composition, an illustration, in modern parlance a "paradigm", based on a declarative-style compositional calculus (something like a dataflow definition). No implementation exists.

John Backus actually never uses the term "FP" Turing Award lecture of 1977, he talks about "FP systems".

Section 11 of his lecture is called "Functional Programming Systems (FP Systems)" and he says:

"In this section we give an informal description of a class of simple applicative programming systems called functional programming (FP) systems, in which 'programs' are simply functions without variables. The description is followed by some examples and by a discussion of various properties of FP systems. An FP system is founded on the use of a fixed set of combining forms called functional forms. These, plus simple definitions, are the only means of building new functions from existing ones; they use no variables or substitution rules, and they become the operations of an associated algebra of programs. All the functions of an FP system are of one type: they map objects into objects and always take a single argument."

"In contrast, a lambda-calculus based system is founded on the use of the lambda expression, with an associated set of substitution rules for variables, for building new functions. The lambda expression (with its substitution rules) is capable of defining all possible computable functions of all possible types and of any number of arguments."

In the same lecture, John Backus extends the FP systems to FFP systems (Formal Systems for Functional Programming):

"As we have seen, an FP system has a set of functions that depends on its set of primitive functions, its set of functional forms, and its set of definitions. In particular, its set of functional forms is fixed once and for all, and this set determines the power of the system in a major way. For example, if its set of functional forms is empty, then its entire set of functions is just the set of primitive functions. In FFP systems one can create new functional forms. Functional forms are represented by object sequences; the first element of a sequence determines which form it represents, while the remaining elements are the parameters of the form."

In furtherance of this, he doesn't let up and proceeds to define AST systems (Applicative State Transition Systems), which again are to be understood as abstractions, not actual implementations:

"This section sketches a class of systems mentioned earlier as alternatives to von Neumann systems. It must be emphasized again that these applicative state transition systems are put forward not as practical programming systems in their present form, but as examples of a class in which applicative style programming is made available in a history sensitive, but non-von Neumann system."

He also mentions APL as a step in the right direction:

"APL is the first language not based on the lambda calculus that is not word-at-a-time and uses functional combining forms. But it still retains many of the problems of von Neumann languages."

Around 12 years later, in The FL Project, the authors of the FL programming language say:

"In his Turing Award paper, John Backus introduced a simple notation for functional programming called FP. The initial design of FP underwent considerable evolution in subsequent years, culminating in the definition of FL. Since the FL definition in 1989 a substantial implementation effort has been underway at the IBM Almaden Research Center to build an optimizing compiler for and to test the viability of programming in FL. This paper is about the design of, implementation of, and experience with the FL language."

That is to say, "FL" is a viable implementation of "FP systems", in the same way as LISP is a viable implementation of Lambda Calculus.

See also FP entry at the Programming Language Awareness Centre

There is a T101 in your kitchen (talk) —Preceding undated comment added 00:21, 26 December 2013 (UTC)

Example program
This page would be improved if it gave a simple example program, such as a program to calculate prime numbers, to compute out the squares of numbers 1 to 10, or at least to print "Hello, world!".

IMHO, there should be a small set of "standard" tasks and all pages on programming languages should show how to do them all. LachlanA (talk) 00:49, 21 January 2023 (UTC)