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 1200+ tech skills courses.