lambda
lambda copied to clipboard
Coproducts are defined inductively
Would this be like Purescript's Coproduct.Nested
: https://github.com/purescript/purescript-functors/tree/master/src/Data/Functor/Coproduct?
(In that case, would it be useful to add something like Coproduct.Inject
and a Project
to the higher-order function wishlist?)
The similarities to me seem to end with the idea that they'd both be inductively defined. I have extreme contempt for Const Void
in any type signature, and the utility of either an inductive or terminal data constructor of CP1 is a dubious proposition for me, at best. I'm also not a huge fan of the set differentiation falling to higher kind and some perverse contortions like type CP2 a b = Coproduct (Const a) Identity b
in order to satisfy the functor itch while also providing the ability to yield an a
or a b
.
I don't implicitly find either Inject
or Project
to be hateful concepts, so I'm certainly open to them.