How did we end up using complex types borrowed from languages such as Haskell (Either, Reader…
Either
Reader