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.
-
Type class: A composite data type that supports operator overloading.
-
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 1400+ tech skills courses.