# FP

> programming language

**Wikidata**: [Q1474061](https://www.wikidata.org/wiki/Q1474061)  
**Wikipedia**: [English](https://en.wikipedia.org/wiki/FP_(programming_language))  
**Source**: https://4ort.xyz/entity/fp

## Summary
FP is a function-level programming language created by John Backus in 1977 that emphasizes composing functions from other functions without variables. It belongs to the family of "function-level" languages, a term Backus introduced to distinguish this style from the older lambda-calculus-based functional programming.

## Key Facts
- Inception year: 1977
- Designed by: John Backus (1924-2007), American computer scientist and mathematician
- Programming paradigm: function-level programming
- Language family: function-level language (distinct from value-level functional languages)
- Alternative names: FP-System, Lenguaje de programación FP
- Wikipedia sitelinks: 9 language editions
- Influenced later languages: FL (1989) and Joy (2001)

## FAQs
### Q: What makes FP different from other functional languages?
A: FP is "function-level" rather than "value-level"—programs are built by composing existing functions without variables or lambda abstraction. This contrasts with lambda-calculus-based languages like Lisp or ML.

### Q: Who invented FP and why?
A: John Backus created FP in 1977 as part of his Turing Award lecture critique of imperative languages. He sought a more algebraically tractable programming style based on function composition.

### Q: Is FP still used today?
A: While not in active production use, FP remains historically significant as the first language to embody Backus's function-level paradigm and influenced research languages like FL and Joy.

## Why It Matters
FP marks a pivotal moment in programming-language history: it was the vehicle John Backus chose to articulate his famous 1977 critique of von Neumann imperative languages and to propose an algebraically disciplined alternative. By banning variables and lambda abstraction, FP forced programmers to think in terms of function composition and higher-order "functionals," foreshadowing modern point-free styles now common in Haskell, APL, and J. The language introduced novel combinators like "construction" and "insert," demonstrated that large programs could be built without side effects or explicit storage, and seeded the broader function-level research lineage that later produced FL at IBM's Almaden lab. FP thus stands as both a historical artifact and a continuing source of conceptual tools for language designers exploring compositional programming beyond the lambda calculus.

## Notable For
- First language to realize Backus's function-level paradigm
- Eliminates variables—programs are pure function compositions
- Introduced the "insert" (reduce/fold) and "construction" combinators
- Served as the prototype for IBM's later FL language (1989)

## Body
### Historical Context
In his 1977 Turing Award lecture, John Backus argued that conventional imperative languages were "fat and flabby" because they encouraged low-level, state-manipulating styles. FP was presented as a lean alternative that elevates the level of discourse to whole functions, enabling algebraic reasoning and parallel execution.

### Language Design
FP programs denote functions that map single values to single values. There are no variables; instead, programmers combine primitive functions (e.g., +, trans, id) with higher-order "functionals" such as composition (◦), construction [f,g,h], and insert /f. The resulting style is point-free and highly amenable to equational proofs.

### Legacy
Although FP never entered mainstream use, its ideas re-surface in array languages (APL, J) and modern functional languages that support tacit (point-free) definitions. The language also foreshadowed map-reduce patterns now standard in distributed computing.

## Schema Markup
```json
{
  "@context": "https://schema.org",
  "@type": "Thing",
  "name": "FP",
  "description": "Function-level programming language created by John Backus in 1977",
  "sameAs": ["https://www.wikidata.org/wiki/Q1144015"],
  "additionalType": "https://schema.org/ComputerLanguage"
}

## References

1. Freebase Data Dumps. 2013