Abstract
Segmentation systems such as Meta's Segment Anything Model (SAM) are, structurally, a sequence of stages — preprocess, encode, prompt/attend, decode a mask, post-process. This paper organizes those stages as higher-order functions (functions that take or return other functions), yielding a modular, reconfigurable pipeline, drawing on the standard functional-programming account of composition [1, 2, 3] and on attention [4] as the mechanism that lets a segmentation model condition its output on a prompt or context. The design is presented as a set of Input–Process–Output (IPO) worked examples — a preprocessing combinator, a parameterized segmentation-function factory, a parallel-map stage, a composable reward for reinforcement-style tuning, and an agent-orchestrated pipeline. The examples specify structure: the modularity, reconfigurability, and by-construction parallelism the composition buys, expressed independently of any framework or language.
1. Introduction
Image segmentation partitions an image into regions corresponding to objects or parts. Modern promptable segmenters — with SAM as the canonical example — couple a heavy image encoder with a lightweight, prompt-conditioned mask decoder, so that a single encoded image can be segmented many ways depending on the prompt. That architecture is already compositional in spirit: a reusable encoding stage feeds a family of prompt-specific decode operations.
This paper makes that compositionality explicit as a design principle. Rather than a fixed straight-line pipeline, each stage is a higher-order function — a function parameterized by other functions — so stages can be swapped, specialized, and recombined without rewriting the pipeline. This is the ordinary functional-programming discipline of building programs by composing smaller functions [1, 2, 3], applied to a segmentation workflow.
2. Related Work
Attention and promptable models. The attention mechanism [4] underlies the prompt-conditioned decoders of modern segmenters: attention is how a decoder focuses on the image regions relevant to a given prompt. We treat SAM as the motivating example of a promptable, two-stage (encode-then-decode) segmenter.
Functional composition. Building systems by composing higher-order functions is the subject of Backus's functional-style algebra of programs [1], Hughes's argument that higher-order functions and lazy evaluation are what make functional programs modular [2], and Strachey's foundational treatment of functions as first-class values [3]. The pipeline design here is an application of exactly this vocabulary.
Ensemble/consensus tuning. Where the design combines multiple candidate outputs or reward signals, the relevant published intuition is that aggregating several reasoning paths improves reliability, as in self-consistency decoding [5]; the composable reward in §3.4 applies that intuition to reward signals.
3. Worked Examples in Input–Process–Output Form
The following examples specify pipeline stages as Input → Process → Output, with the higher-order structure — a function that produces or consumes another function — made explicit.
3.1 Preprocessing combinator (a function that wraps a function).
- Input: a preprocessing function
p(e.g., resize-and-normalize) and, later, an image. - Process: a higher-order combinator takes
pand returns a new stage that appliespto whatever image it is later given. Swappingpreconfigures preprocessing without touching the rest of the pipeline. - Output: a reusable, single-argument preprocessing stage.
3.2 Segmentation-function factory (a function that returns a function).
- Input: a segmentation model and an acceptance threshold.
- Process: the factory closes over the model and threshold and returns a
segmentfunction of one argument (an image). Different thresholds or models yield differentsegmentfunctions from the same factory. The threshold is the criterion of a Signal-Detection accept decision — where to cut mask logits into foreground/background. - Output: a specialized
segmentstage.
3.3 Parallel-map stage (a higher-order function over a collection).
- Input: a per-item processing function and a batch of images.
- Process: a
parallel_mapapplies the processing function across items concurrently. Because each stage is a pure function of its input, mapping it over a batch is embarrassingly parallel by construction. - Output: the batch of processed results.
3.4 Composable reward (for reinforcement-style tuning).
- Input: a target-quality parameter.
- Process: a factory returns a reward function that scores a prediction against ground truth relative to the target. Because rewards are themselves values, several can be composed — weighted, gated, or aggregated — the same "aggregate multiple signals" intuition behind self-consistency [5].
- Output: a reward function usable by a tuning loop.
3.5 Agent-orchestrated pipeline (functions selected by role).
- Input: a task descriptor (e.g., "preprocessing" or "segmentation").
- Process: an orchestrator maps the descriptor to the corresponding stage function and
executes it; agents are holders of a stage function plus an
executeentry point. Chaining agents composes the pipeline; the choice of stage per agent is data, not code. - Output: the staged result, produced by whichever functions the descriptors selected.
Underneath all five is one operation — function composition — applied at different granularities [1, 2, 3]. Decomposing a task into small, single-purpose functions and recomposing them is what makes the pipeline modular; nothing here depends on a particular framework or language.
4. What the Composition Buys
Structuring a segmentation workflow as composed higher-order functions delivers three software-engineering properties directly. Modularity and reconfigurability: each stage is a function parameterized by other functions, so preprocessing, models, thresholds, and reward signals swap in place without rewriting the pipeline (§3.1, §3.2, §3.4). Parallelism by construction: because each stage is a pure function of its input, mapping it across a batch is embarrassingly parallel (§3.3) — a property of pure-function pipelines, guaranteed by the structure rather than tuned into it. Orchestration as data: stage selection is a descriptor an orchestrator resolves, so the pipeline's shape is configuration, not code (§3.5). These follow from the functional-programming discipline the design applies [2].
Evidence & Scope
This is a design: it factors a promptable segmenter into composed higher-order functions and specifies each stage as an IPO transform. The properties it establishes — modularity, reconfigurability, and by-construction parallelism — are structural consequences of pure-function composition [1, 2, 3], and the accept/reject threshold of §3.2 is the Signal-Detection criterion that gives the mask decision measurable structure. SAM is the motivating example of the encode-then-decode form the design generalizes; the composable reward of §3.4 applies the self-consistency aggregation intuition [5] to reward signals. The contribution is the compositional architecture and its structural guarantees.
References
- John Backus (1978). Can Programming Be Liberated from the von Neumann Style? A Functional Style and Its Algebra of Programs. Communications of the ACM. [1977 ACM Turing Award Lecture]
- John Hughes (1989). Why Functional Programming Matters. The Computer Journal.
- Christopher Strachey (2000). Fundamental Concepts in Programming Languages. Higher-Order and Symbolic Computation. [Reprint of 1967 lecture notes]
- Ashish Vaswani et al. (2017). Attention Is All You Need. Advances in Neural Information Processing Systems (NeurIPS). arXiv:1706.03762.
- Xuezhi Wang et al. (2023). Self-Consistency Improves Chain of Thought Reasoning in Language Models. International Conference on Learning Representations (ICLR). arXiv:2203.11171.