Join Nostr
2026-10-13 04:37:01 UTC
in reply to

LisPi on Nostr: > REQ:> Could you rephrase the definition without jargon? I can attempt. Considerable ...

> REQ:> Could you rephrase the definition without jargon?

I can attempt. Considerable semantic loss will result, in some cases.

---

An attempt to explain & simplify the jargon:

[Scheme](https://www.scheme.org/schemers/) is indeed a programming language.

[Continuation](https://en.wikipedia.org/wiki/Continuation), more or less a snapshot of the call stack at a given point in program execution, saved as a value one can restore (this effectively rewinds the program).

[Delimited continuation](https://en.wikipedia.org/wiki/Delimited_continuation) a slice of call stack snapshot, which can be restored in a way that results in a conventional value as the captured computation completes (it does not include the full program stack, it is delimited), enabling it to be used much like any other value and [composably](https://en.wikipedia.org/wiki/Function_composition_(computer_science)) (this is where the monad comparison gets more visible).

[Reifying/reification](https://en.wikipedia.org/wiki/Reification_(computer_science)), turning an abstract property, frequently a semantic property, into a value or part of a value the language directly represents and interacts with, instead of having to be considered by the programmer alone with none of the tooling having any direct interaction with whatever concept or properties the programmer may be applying or trying to enforce.

Somewhat inaccurate example to give a general idea:

A lambda is a reified portable function (this is inaccurate) which is a reification of a function pointer (along with more but I suspect closure captures would confuse here) which is a reification of the fact a function/procedure starts/inhabits at a particular memory address, and a procedure is itself a reification of a set of jumps in assembly (inaccurate simplification) to particular memory locations & instructions expecting a specific memory & register configuration to reproducibly achieve a particular computation.

Representational type, ad hoc construction term referencing the purpose of a kind of type, in this case a type intended primarily to represent or encapsulate properties/metadata about the data underlying it and its context, rather than specifically describing only the data itself.

---

Attempt to explain with minimal jargon (bear in mind it is inaccurate):

So a monad is a type of value (and kind of type) that represents (among other things but let's keep it simple) a possible computation so the language & program can refer to its own flow and possible outcomes (such as values), without necessarily having already completed those computations or regardless of their results. This means the notion of side-effects that the language cannot capture, can be represented to a point.

In languages with adequate [pattern matching](https://en.wikipedia.org/wiki/Pattern_matching) or switch/case statements, it can be used to enforce & simplify the handling of the possible outcomes of a computation declaratively, instead of an imperative try/catch approach with runtime exceptions.

With an adequate compiler it becomes possible to make failure to handle all possible outcomes of a monad a compile error, which would prevent the case of an unhandled exception from being a possibility (which you may have been exposed to from C++ or Java programs in the past).