Table of Contents
Functional and Concurrent Programming by Michel Charpentier Glossary
Return to Functional and Concurrent Programming by Michel Charpentier, Functional and Concurrent Programming Glossary, Functional and Concurrent Programming, Functional Programming, Functional Languages, Functional Programming Concurrency, Functional Bibliography, Functional Courses, Functional Glossary, Awesome Functional, Functional GitHub, Functional [[Topics]]
A
- action - An impure subroutine that relies on side effects to modify the state of an application but does not return a (meaningful) value; sometimes also called a procedure. See also pure. Discussed in Chapter 3.
- algebraic data type - A type that combines existing types through a combination of alternatives (sum) and aggregation (product). Many standard types, including tuples, options, lists, and trees, can be defined as algebraic data types. Discussed in Chapter 5.
C
- concurrent - Said of multiple code executions that happen at the same time (“concurrently”). In this book, synonymous]] with parallel. Discussed in Chapter 16.
- curried, currying - A curried function consumes its first argument (or argument list) and returns another function that will use the remaining arguments (or argument lists). By currying, a function that uses a list of multiple arguments can be transformed into a function that uses multiple lists of fewer arguments. See also higher-order. Discussed in Section 9.2.
D
- deadlock - A situation is which several entities perpetually wait for each other in a cycle due to faulty synchronization. Discussed in Sections 22.3 and 27.7.
E
- execution stack - A stack that keeps track of the current nesting of subroutine]]s executed by a thread: Entering a subroutine adds to the stack, exiting it removes from the stack. Also called call stack.
- expression - A code [[fragment that, through computation, evaluates to a value. In addition to expressions, programming languages may involve code without a value, evaluated for the purpose of side effects.
- extension method - A mechanism by which additional methods can be grafted onto an existing type. Discussed in Section 2.5.
F
- function - 1. A mathematical abstraction that maps each value from a set to a unique value from another set. 2. A programming language subroutine parameterized by zero or more arguments and which produces a value. For disambiguation, see pure, side effect. Discussed in Chapter 2.
- function literal - An expression that denotes an unnamed function; also called anonymous function. Lambda expressions are a common syntax]] for function literals. Discussed in Section 9.3.
- functional - Variously defined by different authors, but often said of a programming style that emphasizes the use of pure functions, immutability, recursion, algebraic data types, higher-order functions, and/or lazy evaluation. Discussed in Chapter 1.
- future - A handle on an asynchronous computation]]. Futures vary in capabilities, and terminology is ambiguous. Futures are sometimes referred to as promises. Discussed in Chapters 25 and 26.
G
- garbage [[collection - A form of automatic memory management used to reclaim unused memory. The Java Virtual Machine implements a garbage collector, available to all languages that run on this platform.
H
- happens-before - The partial order]] that defines the Java Memory Model. Note that “happens before” and “happens-before” have a different meaning in the book. Discussed in Section 22.5.
- higher-order - Said of a function that consumes or produces other functions as values. Discussed in Chapters 9 and 10.
I
- immutable - That which cannot be [[changed. This term can apply to an object [[state (immutable object) or a non-reassignable variable. See also mutable. Discussed in Chapter 3.
- imperative - Said of a programming style centered on actions that modify a [[state, such as assignment [[statements. By contrast, functional programming is said to be more declarative. See also pure, side effect.
- instance - A member value]] of a type. In object-oriented programming]] specifically, an instance of a class — that is, an object created by instantiating this class.
J
L
- lambda expression - A common syntax]] for function literals, named after λ-calculus, a theory of computable functions. Discussed in Section 9.3.
- lazy - Refers to]] various forms of delayed]] evaluation: lazy evaluation, lazy [[initialization, etc. Discussed in Chapter 12.
- list - 1. A generic [[term for an ordered [[collection of values]], which can be mutable or not, support efficient access by indexing or not, etc. 2. A specific data structure used in functional programming, and characterize]]d by its immutability and head/tail structure; sometimes referred to as functional list for disambiguation. Discussed in Section 3.7 and Chapter 7.
- lock - A basic synchronization [[mechanism used in concurrent programs to prevent data-sharing]] tasks from interfering with each other. Locks are only one of the many synchronizers a programming environment might offer. Discussed in Chapters 18 and 19 and Section 23.1.
M
- method - A function-like subroutine that is associated with a target object, which serves as one of its arguments.
- mutable - That can be [[changed. For instance, a mutable object has a state that can be modified; a mutable variable can be reassigned with a new value. See also immutable. Discussed in Chapter 3.
N
O
- object - The fundamental component of the state of an object-oriented program]]. An object typically encapsulates [[data and the operations that manipulate this data.
- operator - A function typically of one or two arguments, often with a symbolic name, and invoked in prefix, infix, or postfix notation.
P
- parallel - Said of multiple code executions that happen at the same time (“in parallel”). In this book, synonymous]] with concurrent. Discussed in Chapter 16.
- pattern matching - A construct, common in functional programming languages, that is used to select between alternatives and to separate component]]s of an aggregate type]]. Pattern matching can be thought of as a powerful generalization of switch. It is especially handy when dealing with algebraic data types. Discussed in Chapter 5.
- pattern-zipper - An efficient [[implementation technique for an immutable structure that is traversable (navigatable). Discussed in Section 5.6.
- pure - Said of a programming function whose behavior depends only on its input, and which has no side effects. Pure functions are used to represent true functions (mathematical functions). See also action. Discussed in Chapter 3.
Q
- queue - 1. A data structure for temporary [[storage of values waiting to be processed. Queue elements are often retrieved in a predefined ordering. Common orderings are first-in-first-out (FIFO), last-in-first-out (LIFO), priority [[based, or time [[based. 2. A first-in, first-out queue.
R
- recursive - Said of a function that invokes itself in its computation, one or more times, directly or indirectly, and of a programming style that relies on such functions. Discussed in Chapter 6.
S
- set - 1. A mathematical abstraction of an unordered [[collection of values, without duplicates. 2. A data structure that implements this abstraction, usually with efficient [[lookup, and possibly with ordering (ordered sets) or duplicates (multisets).
- side effect - A modification of the [[state of system. Could be intentional or not. See also pure, action. Discussed in Chapter 3.
- stack - 1. A data structure that stacks elements on top of each other, typically with only the top element accessible. Sometimes referred to as a last-in-first-out (LIFO) queue. 2. The execution stack.
- switch - A programming language [[construct used to pick among several alternatives. It can be seen as a generalization of if-then-else, which is basically a switch with two branches. See also pattern matching.
- synchronization - A generic [[term for mechanisms and techniques used by threads to coordinate. Discussed in Chapters 22 and 23.
- synchronous, synchronously]] - In this book, refers to]] a computation that takes place within the program flow (“now”), as opposed to an asynchronous computation]] that does not interfere with the current flow of execution. Discussed in Chapter 16.
T
- tail [[recursion - A particular form of [[recursion susceptible to compiler optimizations. Discussed in Section 6.5.
- tree - A connected, a[[cyclic graph]], typically undirected. A rooted tree identifies a vertex as the root of the tree; an ordered [[tree maintains an ordering among the children of a node (e.g., left and right in a binary [[tree).
V
- value - An immutable piece of data. Values can be stored in variable]]s and data structures, returned by functions, or passed as arguments to functions.
- varargs - Short for variable-length arguments. Said of subroutines in which the number of argument]]s is not fixed. Discussed in Section 2.7.
Fair Use Sources
Functional Programming: Functional Programming Compare and Contrast 10 Languages by Cloud Monk (December 2024)
Purely Functional Languages, Purely Functional Programming Languages (Haskell, Elm, PureScript, Agda, Idris, Coq, Lean, Miranda, Erlang, F Sharp | F)
Popular Functional Programming Languages (Haskell, Scala, Clojure, F Sharp | F, Erlang, Elm, OCaml, Elixir, Racket, PureScript, Lisp, Scheme, Common Lisp, Rust, Swift, Java, Kotlin, TypeScript, JavaScript, Python, Ruby)
FP, Functional Clojure, Functional Haskell, Functional Erlang, Functional Elixir, Functional F Sharp | Functional F. Data Oriented Programming, Functional C Plus Plus | Functional C++, Functional C Sharp | Functional C, Functional Java, Functional Kotlin, Functional Scala, Functional Go, Functional Rust, Functional JavaScript (Functional React), Functional TypeScript (Functional Angular), Functional Swift; Lisp, FP (programming language), Data-Oriented Programming (DOP), Functional and Concurrent Programming, Functional Programming Bibliography - Manning's Programming Functional in, Functional Programming Glossary - Glossaire de FP - French, Awesome Functional Programming, Functional Programming Topics, Concurrency. (navbar_functional - see also , navbar_python_functional, navbar_django_functional, navbar_flask_functional, navbar_javascript_functional, navbar_typescript_functional, navbar_react_functional, navbar_angular_functional, navbar_vue_functional, navbar_java_functional, navbar_kotlin_functional, navbar_spring_functional, navbar_scala_functional, navbar_clojure_functional, navbar_csharp_functional, navbar_dotnet_functional, navbar_fsharp_functional, navbar_haskell_functional, navbar_rust_functional, navbar_cpp_functional, navbar_swift_functional, navbar_elixir_functional, navbar_erlang_functional, navbar_functional, navbar_functional_reactive)
Cloud Monk is Retired ( for now). Buddha with you. © 2025 and Beginningless Time - Present Moment - Three Times: The Buddhas or Fair Use. Disclaimers
SYI LU SENG E MU CHYWE YE. NAN. WEI LA YE. WEI LA YE. SA WA HE.