







Functional decomposition is a technique for dividing a larger task into smaller tasks. During decomposition, the team focuses on the inputs and outputs of each task and uses generic descriptions of the process achieved by the task. The decomposition process is usually applied recursively until the design team can readily envision ways of achieving each of the sub-tasks. Functional decomposition is also called functional analysis, top-down design, or logical decomposition.
CPS based functional references
I have recently come up with a new way of representing functional references.
Functional programming with bananas, lenses, envelopes and barbed wire
We develop a calculus for lazy functional programming based on recursion operators associated with data type definitions. For these operators we derive various algebraic laws that are useful in deriving and manipulating programs. We shall show that all example functions in Bird and Wadler's “Introduction to Functional Programming” can be expressed using these operators.

Work breakdown structure
A work-breakdown structure (WBS) in project management and systems engineering is a breakdown of a project into smaller components. It is a key project management element that organizes the team's work into manageable sections. The Project Management Body of Knowledge defines the work-breakdown structure as a "hierarchical decomposition of the total scope of work to be carried out by the project team to accomplish the project objectives and create the required deliverables."

New paper: "Functional Decision Theory" - Machine Intelligence Research Institute
MIRI senior researcher Eliezer Yudkowsky and executive director Nate Soares have a new introductory paper out on decision theory: "Functional decision theory:

Stream Processing: Continuous Processing of Data Streams
Explore the Stream Processing design pattern for continuous asynchronous data flow, enhancing real-time data processing capabilities in enterprise applications using Clojure and leveraging functional programming principles.
An introduction to radical participatory design: decolonising participatory design processes
Outside of community-led design projects, most participatory design processes initiated by a company or organisation maintain or even strengthen power imbalances between the design organisation and the community on whose purported behalf they are designing, further increasing the absencing experience. Radical participatory design (RPD) is a radically relational answer to the coloniality inherent in participatory design where the community members’ disappointment is greater due to the greater expectations and presencing potential of a ‘participatory design’ process. We introduce the term RPD to show how research and design processes can be truly participatory to the root or core. Instead of treating participatory design as a method, a way of conducting a method, or a methodology, we introduce RPD as a meta-methodology, a way of doing any methodology. We explicitly describe what participation means and compare and contrast design processes based on the amount of participation, creating a typology of participation. We introduce ‘designer as community member’, ‘community member as designer,’ and ‘community member as facilitator’ models and provide characteristics for the meta-methodology of RPD.

An introduction to radical participatory design: decolonising participatory design processes
Outside of community-led design projects, most participatory design processes initiated by a company or organisation maintain or even strengthen power imbalances between the design organisation and the community on whose purported behalf they are designing, further increasing the absencing experience. Radical participatory design (RPD) is a radically relational answer to the coloniality inherent in participatory design where the community members’ disappointment is greater due to the greater expectations and presencing potential of a ‘participatory design’ process. We introduce the term RPD to show how research and design processes can be truly participatory to the root or core. Instead of treating participatory design as a method, a way of conducting a method, or a methodology, we introduce RPD as a meta-methodology, a way of doing any methodology. We explicitly describe what participation means and compare and contrast design processes based on the amount of participation, creating a typology of participation. We introduce ‘designer as community member’, ‘community member as designer,’ and ‘community member as facilitator’ models and provide characteristics for the meta-methodology of RPD.

Integrating functional and imperative programming | Proceedings of the 1986 ACM conference on LISP and functional programming
We present a new model, based on monads, for performing input/output in a non-strict, purely functional language. It is composable, extensible, efficient, requires no extensions to the type system, and extends smoothly to incorporate mixed-language ...
Design System | TanStack
The TanStack Design System — living design tokens and components.

A modal analysis of staged computation | Journal of the ACM
We show that a type system based on the intuitionistic modal logic S4 provides an expressive framework for specifying and analyzing computation stages in the context of typed λ-calculi and functional languages. We directly demonstrate the sense in which ...

OCaml Programming: Correct + Efficient + Beautiful — OCaml Programming: Correct + Efficient + Beautiful
A textbook on functional programming and data structures in OCaml, with an emphasis on semantics and software engineering. This book is the textbook for CS 3110 Data Structures and Functional Programming at Cornell University. A past title of this book was “Functional Programming in OCaml”.
Hierarchical Task Analysis - an overview | ScienceDirect Topics
Designing Systems | Atomic Design by Brad Frost
Learn how to create and maintain digital design systems, allowing your team to roll out higher quality, more consistent UIs faster than ever before.

Why Futhark?
A high-performance and high-level purely functional data-parallel array programming language that can execute on the GPU and CPU.
Tangible Functional Programming