







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:

// Functional Event Sourcing Decider - thinkbeforecoding
Functional Event Sourcing Decider - Jérémie Chassaing

Retrocomputing as a Model for Sustainable and Cognitive Computing: Lessons from Low-Resource Systems
This paper argues that retrocomputing constitutes a conceptually productive model for rethinking sustainability in contemporary computing. Early computing systems operated under strict hardware constraints, necessitating efficiency, clarity, and minimalism in both software and interaction design. In contrast, contemporary systems are frequently characterised by computational excess, software bloat, and attention-fragmenting interfaces. Drawing on examples from early home computing and command-line environments, this paper analyses how low-resource systems make visible forms of computational minimalism with relevance to present-day design challenges. A central theoretical contribution is the distinction between interface-level and system-structure-level design analysis, which demonstrates that cognitive effects arise not only from visual and interactional surface features but from deeper computational organisation. The discussion integrates perspectives from human-computer interaction and cognitive science, particularly in relation to attention, cognitive load, and user experience. The paper adopts a conceptual and exploratory approach grounded in systematic literature review, aiming to identify design-relevant patterns rather than to provide empirical validation. It introduces the concepts of computational minimalism and cognitive sustainability as complementary analytical frameworks, and derives five principles for sustainable system design. Crucially, the paper also address

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.

Why design systems are a single point of failure
Tools and techniques to prevent design system collapse

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