A type-level S Combinator for Haskell.
I will be deeply impressed if anyone finds a use for this.
Why does it exist? We have a type-level I combinator in the Identity monad.
newtype Identity a = Identity {runIdentity :: a}
We also have a type-level K combinator in the Const functor.
newtype Const a b = Const {getConst :: a}
But where is our S combinator? More importantly, is it useful at all? This repository exists, because I want to know.