# Terminology

Learn the definitions of some prominent functional programming ideas discussed in the course.

We'll cover the following

## Terminology used in the course

Functional programming is a vast field and has an elaborate lexicon. Below are definitions for some of the more prominent functional programming ideas discussed throughout the course:

• Turing machine: An abstract computation model with memory that manipulates the contents of the memory in accordance with a set of rules.

• Function: A relation that associates elements of a domain, or a set, to those of a codomain, or another set.

• Arity: The number of arguments a function accepts.

• Lambda calculus: A mathematical system developed by Alonzo Church premised on using abstraction and function application for computation that involves variable binding and substitution.

• Abstraction: The detachment of mathematical ideas from particular situations and generalization of said concepts for a variety of use-cases.

• Function application: The act of applying a function to a value from a set of applicable values to generate a result in a set of possible return values.

• Category theory: The study of the mathematical notion of categories, or subtle algebras that abstract real-life concepts.

• First-class function support: A property of programming languages that enables support for the usage of functions in various fashions akin to variables usage, treating them as first-class citizens.

• Pure function: A function with no side effects or side causes.

• Referential transparency: The barometer for function purity. This is the proof of whether a function always evaluates to the same output given the same input.

• PHP userland: A buzzword for all the functions, variables, and objects contained in the PHP core distribution.

• Variadic functions: Callable units of indefinite arity.

• Boolean short-circuiting: Instead of evaluating all terms of a boolean expression, stopping (or short-circuiting) immediately after evaluating a subexpression that determines the truth or falsity of the expression.

• Functor: A type class with contents that can be mapped over and adheres to the laws of identity and composition.

• Fuzzing: A testing technique that involves feeding multiple inputs, mostly random and likely erroneous, into a program.

• Monad: A versatile functor built atop polymorphic concepts that adheres to the laws of right-identity, left-identity, and associativity.

• Recursion: A function calling itself.

• Pattern matching: A top-to-bottom, left-to-right algorithm to check a value against a sequence of tokens.

• Property testing: A condition achievable by a threaded program that allows it to coexist in a threaded environment.

• Thread: A dispatchable unit of work within a process.

• Transducer: A composable higher-order algorithmic transformation usable on list structures.

• Message broker: An architecture premised on relaying messages from senders to receivers through a messaging protocol.

• Job worker: A script that usually runs in the background and processes message queue data.

• Message queue: A queue optimized for asynchronous data passing between producers and consumers.

• Temporal coupling: A situation in which two or more class methods, closely dependent on each other, require invocation in a particular order.

• Thread safety: A condition achievable by a threaded program that allows it to exist in a threaded environment.

• Union type: A composite algebraic data type (ADT) composed of multiple subtypes.

Get hands-on with 1200+ tech skills courses.