When composing predicates for phantom types it won’t take long before you reach after
functional composition. Unfortunately, fully supporting a typed n-ary compose
functions isn’t yet feasible without shipping a custom mypy plugin. In lieu of having
that effort in place, a simpler but fully typed compose2
function is shipped. The
door, however, is left wide open for the possibility of shipping an n-ary, generalized
compose function in the future.
phantom.fn.*
compose2(a: Callable[[AA], AR], b: Callable[[BA], AA]) -> Callable[[BA], AR]
returns a function composed from the two given functions such that calling
compose2(a, b)(x)
is equivalent to calling a(b(x))
.