(composables) are ways of lifting computations from unboxed types into
boxed types. Here, a "boxed type" is a type function with one unsaturated
hole (which may have several occurrences). We can think of the box type
as a function from a type to a type. Call this type function M, and let P, Q, R, and S be schematic variables over types.
Recall that a monad requires a singleton function `mid : P-> MP`, and a
(composables) are ways of lifting computations from unboxed types into
boxed types. Here, a "boxed type" is a type function with one unsaturated
hole (which may have several occurrences). We can think of the box type
as a function from a type to a type. Call this type function M, and let P, Q, R, and S be schematic variables over types.
Recall that a monad requires a singleton function `mid : P-> MP`, and a