The topic of this articlemay not meet Wikipedia'sgeneral notability guideline. Please help to demonstrate the notability of the topic by citingreliable secondary sources that areindependent of the topic and provide significant coverage of it beyond a mere trivial mention. If notability cannot be shown, the article is likely to bemerged,redirected, ordeleted. Find sources: "Value-level programming" – news ·newspapers ·books ·scholar ·JSTOR(June 2025) (Learn how and when to remove this message) |
Value-level programming refers to one of the two contrastingprogramming paradigms identified byJohn Backus in his work onprograms as mathematical objects, the other beingfunction-level programming.[1] Backus originally used the termobject-level programming but that term is now prone to confusion withobject-oriented programming.
Value-level programs are those that describe how to combine variousvalues (i.e., numbers, symbols, strings, etc.) to form other values until the finalresult values are obtained. New values are constructed from existing ones by the application of various value-to-value functions, such as addition, concatenation, matrix inversion, and so on.
Conventional,von Neumann programs are value-level:expressions on the right side ofassignment statements are exclusively concerned with building a value that is then to be stored.
The value-level approach to programming invites the study of the space of values under the value-forming operations, and of the algebraic properties of those operations. This is what is called the study ofdata types, and it has advanced from focusing on thevalues themselves and their structure, to a primary concern with the value-formingoperations and their structure, as given by certain axioms and algebraic laws, that is, to thealgebraic study of data types.
Lambda calculus-based languages (such asLisp,ISWIM, andScheme) arein actual practice value-level languages, although they are not thus restricted by design.
To see why typicallambda style programs are primarily value-level, consider the usual definition of a value-to-value function, say
f = λx.E
here,x must be a value variable (since the argument off is a value by definition) andE must denote a value too (sincef's result is a value by definition). Typically,E is an expression involving the application of value-forming functions to value variables and constants; nevertheless, a few value-forming functions havingboth function and value arguments do exist and are used for limited purposes[citation needed].
If the termvalues is defined to include the value variables themselves, then the value-level view of programming is one of building values by the application of existing programs (value-forming operations/functions) to other values. Lambda-style programming builds a new program from the result-value by lambda-abstracting the value variables.