natural deduction metalanguage, practical foundations
type theory (dependent, intensional, observational type theory, homotopy type theory)
computational trinitarianism =
propositions as types +programs as proofs +relation type theory/category theory
constructive mathematics, realizability, computability
propositions as types, proofs as programs, computational trinitarianism
Call-by-value (CbV) is a widely used evaluation strategy? for the λ-calculus and many programming languages. It is often studied in comparison with call-by-name? (CbN).
The small-step operational semantics for the CbV -calculus is given by the following rules:
where ranges over values, that is, over variables and abstractions.
This reduction is said to be weak as terms inside abstractions cannot be reduced.
In the presence of side effects, such as state mutation or random number sampling, the unrestricted reduction is no longer confluent, and CbV and CbN no longer always agree on all computations.
For example, only in the former is (fun x -> x + x) (random 0 1) : int always even.
For calculi featuring recursion or side effects, one needs to be careful about the interpretation of values and functions for the substitution and computational soundness properties to hold. A common choice is to interpret function types as strict functions, i.e., as functions mapping to .
We can define various translations from the standard -calculus to the linear -calculus, in particular .
We have in the (weak) CbV -calculus if and only if in the linear -calculus with (surface) reduction. Similarly, strong call-by-value corresponds to deep linear reduction.
Last revised on July 10, 2026 at 07:51:57. See the history of this page for a list of all contributions to it.