f:(g:x) construction [f1,...,fn] where [f1,...,fn]:x = 〈f1:x,...,fn:x〉 condition (h ⇒ f;g) where (h ⇒ f;g):x = f:x if h:x = T = g:x if h:x = F = ⊥ otherwise apply-to-all αf where αf:〈x1,...,xn〉 = 〈f:x1,...,f:xn〉 insert-right /f where /f:〈x〉 = x and /f:〈x1,x2,...,xn〉 = f:〈x1,/f:〈x2,...,xn〉〉 and /f:〈 〉 = unit f insert-left \f where \f:〈x〉 = x and \f:〈x1,x2,...,xn〉 = f:〈\f:〈x1,...,xn-1〉,xn〉 and \f:〈 〉 = unit f Equational functions In addition to being constructed from primitives by functionals, a function may be defined recursively by an equation, the simplest kind being: f ≡ Ef where Ef is an expression built from primitives, other defined functions, and the function symbol f itself, using functionals. FP84 FP84 is an extension of FP to include infinite sequences, programmer-defined combining forms (analogous to those that Backus himself added to FL, his successor to FP), and lazy evaluation. Unlike FFP, another one of Backus' own variations on FP, FP84 makes a clear distinction between objects and functions: i.e., the latter are no longer represented by sequences of the former. FP84's extensions are accomplished by removing the FP restriction that sequence construction be applied only to non-⊥ objects: in FP84 the entire universe of expressions (including those whose meaning is ⊥) is closed under sequence construction. FP84's semantics are embodied in an underlying algebra of programs, a set of function-level equalities that may be used to manipulate and reason about programs. References Sacrificing simplicity for convenience: Where do you draw the line?, John H. Williams and Edward L. Wimmers, IBM Almaden Research Center, Proceedings of the FIfteenth Annual ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages, San Diego, CA, January 1988. External links Interactive FP (requires Java), Help page FP-Interpreter written in Delphi/Lazarus Dirk Gerrits: Turing Award lecture (1977-1978) ff, in John W. Backus (Publications) FP84 vs FL: Sacrificing simplicity for convenience: Where do you draw the line? J.H. William and E.L. Wimmers, 1988 (Pages 169–179) Academic programming languages Function-level languages Programming languages created in 1977