Skip to content
Main menu
  • Main page
  • Discover
  • Unexpected connections
  • Topics
  • Random article
  • Search
Your library
  • Saved articles
  • Recent discoveries
  • Rabbit-hole trails
Topic areas
  • Computer Science
  • Mathematics
  • Physics
  • Engineering
  • Biology
  • Economics
  • Curiosities
WikiholeDeeper into Wikipedia
EnglishEN
  • Saved
  • History

  • Article text and media come live from Wikipedia via the official MediaWiki API and are available under the Creative Commons Attribution-ShareAlike 4.0 License; additional terms may apply. Each article links to its source and revision.
  • WikiHole is an independent project and is not affiliated with the Wikimedia Foundation.
  • How ranking works
  • All topics
  • Reading history
  • Random article
  • MediaWiki API

Function-level programming

  • Article
  • Rabbit hole
  • Read
  • View history
Tools
Actions
  • Read
  • View history
General
  • Recent changes
  • Related articles
  • Random discovery
This article
Reading time
3 min
Topic
Computer Science
Views
120 in 14 days
Last edited
6 Oct 2026
Print/export
  • Printable version
In other projects
  • Wikidata item
From Wikipedia, the free encyclopedia
Rabbit hole:
  1. Function-level programming

In computer science, function-level programming is one of the two contrasting programming paradigms identified by John Backus in his work on programs as mathematical objects, the other being value-level programming.

"function-level" redirects here. For the term in mental health assessments, see Global Assessment of Functioning.

Not to be confused with Functional programming.

In his 1977 Turing Award lecture, Backus set forth what he considered to be the need to switch to a different philosophy in programming language design:1

Programming languages appear to be in trouble. Each successive language incorporates, with a little cleaning up, all the features of its predecessors plus a few more. [...] Each new language claims new and fashionable features... but the plain fact is that few languages make programming sufficiently cheaper or more reliable to justify the cost of producing and learning to use them.

He designed FP to be the first programming language to specifically support the function-level programming style.

A function-level program is variable-free (cf. point-free programming), since program variables, which are essential in value-level definitions, are not needed in function-level programs.

Loading the rest of the article…

Recent changes

Rabbit hole

Where Function-level programming leads. Every connection below has a source: a link in this article, a shared Wikipedia category, or CirrusSearch text similarity. Articles already on your trail are left out.

Contents
  • (Top)
  • Introduction
  • Contrast to functional programming
  • Example languages
  • See also
  • References
  • External links
  • Recent changes
  • Rabbit hole
Contents
Contents8 sections
  • (Top)
  • Introduction
  • Contrast to functional programming
  • Example languages
  • See also
  • References
  • External links
  • Recent changes
  • Rabbit hole

Introduction

In the function-level style of programming, a program is built directly from programs that are given at the outset, by combining them with program-forming operations or functionals. Thus, in contrast with the value-level approach that applies the given programs to values to form a succession of values culminating in the desired result value, the function-level approach applies program-forming operations to the given programs to form a succession of programs culminating in the desired result program.

As a result, the function-level approach to programming invites study of the space of programs under program-forming operations, looking to derive useful algebraic properties of these program-forming operations. The function-level approach offers the possibility of making the set of programs a mathematical space by emphasizing the algebraic properties of the program-forming operations over the space of programs.

Another potential advantage of the function-level view is the ability to use only strict functions and thereby have bottom-up semantics, which are the simplest kind of all. Yet another is the existence of function-level definitions that are not the lifted (that is, lifted from a lower value-level to a higher function-level) image of any existing value-level one: these (often terse) function-level definitions represent a more powerful style of programming not available at the value-level.

Contrast to functional programming

When Backus studied and publicized his function-level style of programming, his message was mostly misunderstood2 as supporting the traditional functional programming style languages instead of his own FP and its successor FL.

Backus calls functional programming applicative programming; his function-level programming is a particular, constrained type.

A key distinction from functional languages is that Backus' language has the following hierarchy of types:

  • atoms
  • functions, which take atoms to atoms
  • Higher-order functions (which he calls "functional forms"), which take one or two functions to functions

...and the only way to generate new functions is to use one of the functional forms, which are fixed: you cannot build your own functional form (at least not within FP; you can within FFP (Formal FP)).

This restriction means that functions in FP are a module (generated by the built-in functions) over the algebra of functional forms, and are thus algebraically tractable. For instance, the general question of equality of two functions is equivalent to the halting problem, and is undecidable, but equality of two functions in FP is just equality in the algebra, and thus (Backus imagines) easier.

Even today, many users of lambda style languages often misinterpret Backus' function-level approach as a restrictive variant of the lambda style, which is a de facto value-level style. In fact, Backus would not have disagreed with the 'restrictive' accusation: he argued that it was precisely due to such restrictions that a well-formed mathematical space could arise, in a manner analogous to the way structured programming limits programming to a restricted version of all the control-flow possibilities available in plain, unrestricted unstructured programs.

The value-free style of FP is closely related to the equational logic of a cartesian-closed category.

Example languages

Main category: Function-level languages

The canonical function-level programming language is FP. Others include FL, and J.

See also

  • Concatenative programming language
  • Functional programming, declarative programming (compare)
  • Tacit programming
  • Value-level programming, imperative programming (contrast)

References

  1. 1Backus, John (1978). "Can programming be liberated from the von Neumann style?: A functional style and its algebra of programs" (PDF). Communications of the ACM. 21 (8): 613–641. doi:10.1145/359576.359579.
  2. 2Hudak, Paul (1989). "Conception, evolution, and application of functional programming languages". ACM Computing Surveys. 21 (3): 359–411. doi:10.1145/72551.72554. S2CID 207637854.

External links

  • Function Level Programs As Mathematical Objects from John Backus
  • From Function Level Semantics to Program Transformation and Optimization SpringerLink see point 1.2 and 1.3
  • Closed applicative languages, FP and FL, in John W. Backus (Publications) or the original Programming Language Semantics and Closed Applicative Languages
  • Instance variables, a way out of the variable abstinence
Study aids for Function-level programming

Terminology

function-level
In computer science, function-level programming is one of the two contrasting programming paradigms identified by John Backus in his work on programs as mathematical objects, the other being value-level programming.
variable-free
A function-level program is variable-free (cf. point-free programming), since program variables, which are essential in value-level definitions, are not needed in function-level programs.
program-forming operations
In the function-level style of programming, a program is built directly from programs that are given at the outset, by combining them with program-forming operations or functionals.
functionals
In the function-level style of programming, a program is built directly from programs that are given at the outset, by combining them with program-forming operations or functionals.

Terms the article defines in bold, quoted in context.

Categories:
  • Programming paradigms
  • Programming language theory

682 words · 2 references · revision 1378915944 · CC BY-SA 4.0

General
  • Recent changes
  • Related articles
  • Random discovery
This article
Reading time
3 min
Topic
Computer Science
Views
120 in 14 days
Last edited
6 Oct 2026

Key concepts

  • FP (programming language)3
  • Programming paradigm1
  • John Backus1
  • Value-level programming1
  • Turing Award1
  • Programming language1
  • Point-free programming1
  • Variable (programming)1
  • Strict function1
  • Functional programming1

The articles this one links to most, weighted towards the introduction.

Print/export
  • Printable version
In other projects
  • Wikidata item
Created
13 Aug 2004
History
106 edits
67 contributors
No edits in the last 30 days
Last edited
6 Oct 2026

106 revisions in total · 67 contributors

  1. 6 Oct 2026, 22:14 UTCTemporary accountNo edit summary−7diff
  2. 26 Jan 2026, 01:13 UTCTc14Hdm§ top Changed capitalization0diff
  3. 24 Jun 2025, 08:58 UTCMichaelMaggsAdding local short description: "Computer programming paradigm", overriding Wikidata description "programming paradigm"+52diff
  4. 1 Feb 2024, 22:19 UTCMathnerd314159change paradigms template to navbox (see Template talk:Programming paradigms#too long)+8diff
  5. 14 Mar 2023, 09:22 UTCComp.archmNo edit summary0diff
  6. 18 Feb 2023, 22:53 UTCAnonymous contributor§ External links+196diff
  7. 18 Feb 2023, 22:34 UTCMaterialscientistmReverted edits by 178.9.69.187 (talk): addition of unnecessary/inappropriate external links (HG) (3.4.12)+21diff
  8. 18 Feb 2023, 22:33 UTCAnonymous contributorreverted§ External links+21diff

View full revision history

Created
13 Aug 2004
History
106 edits
67 contributors
No edits in the last 30 days
Last edited
6 Oct 2026

Go deeper: linked from this article

  • Listed under See also

    Functional programming

    Programming paradigm based on applying and composing functions

    In computer science, functional programming is a programming paradigm where programs are constructed by applying and composing functions.

    33 min readGo deeper
  • Linked from the introduction

    Programming language

    Language for controlling a computer

    A programming language is a formal language designed to express computations, typically supporting the specification of software both for humans and for computers.

    24 min readGo deeper
  • Linked from the introduction

    Programming paradigm

    High-level computer programming conceptualization

    A programming paradigm is a relatively high-level way to conceptualize and structure the implementation of a computer program.

    9 min readGo deeper
  • Listed under See also

    Imperative programming

    Type of programming paradigm in computer science

    In computer science, imperative programming is a software programming paradigm that provides specific instructions for how computations should take place.

    12 min readGo deeper
  • Listed under See also

    Declarative programming

    Programming paradigm based on modeling the logic of a computation

    In computer science, declarative programming is a programming paradigm that expresses the logic of a computation without fully describing its control flow.

    6 min readGo deeper
  • Listed under See also

    Tacit programming

    Programming paradigm

    Tacit programming, also called point-free style, is a programming paradigm in which function definitions do not identify the arguments (or "points") on which they operate.

    4 min readGo deeper
  • Linked from the introduction

    Variable (high-level programming language)

    Named container for a particular type of data

    In some high-level programming languages, a variable is an abstract storage or indirection location paired with an associated symbolic name, which contains some known or unknown quantity of data or…

    8 min readGo deeper
  • Linked from the introduction

    FP (programming language)

    Programming language

    FP (for functional programming) is a programming language created by John Backus to support the function-level programming paradigm.

    3 min readGo deeper

Adjacent: shared categories and similar text

  • Linked in “Contrast to functional programming”

    Lambda calculus

    Mathematical-logic system

    In mathematical logic, the lambda calculus (also written as λ-calculus) is a formal system for expressing computation based on function abstraction and application using variable binding and substitution.

    28 min readGo deeper
  • Linked in “Contrast to functional programming”

    Cartesian closed category

    Type of category in category theory

    In category theory, a category is Cartesian closed if, roughly speaking, any morphism defined on a product of two objects can be naturally identified with a morphism defined on one of the factors.

    7 min readGo deeper
  • Linked in “Contrast to functional programming”

    Module (mathematics)

    Generalization of vector spaces from fields to rings

    In mathematics, a module is a generalization of the notion of vector space in which the field of scalars is replaced by a (not necessarily commutative) ring.

    8 min readGo deeper
  • Linked in “Contrast to functional programming”

    Higher-order function

    Function that takes one or more functions as an input or that outputs a function

    In mathematics and computer science, a higher-order function (HOF) is a function that does at least one of the following: takes one or more functions as arguments (i.e. a procedural parameter, which…

    9 min readGo deeper
  • Linked in “Introduction”

    Strict function

    In computer science and computer programming, a function f is said to be strict if, when applied to a non-terminating expression, it also fails to terminate.

    1 min readGo deeper
  • Linked in “Contrast to functional programming”

    Halting problem

    Problem in computer science

    In computability theory, the halting problem is the decision problem of, given an arbitrary computer program and an input, determining whether said program will eventually finish running and halt, or will continue to run forever.

    20 min readGo deeper