Eugenio
07/22/2018, 11:15 AMinterface Kind<out F, out A>
class ForEither private constructor() { companion object }
@higherkind
sealed class Either<out A, out B> : EitherOf<A, B> {
to:
sealed class KindOrId
abstract class KindId(val forType: KClass<out Kind<*, *>>) : KindOrId()
open class Kind<out F: KindOrId, out A> : KindOrId()
object ForEither : KindId(Either::class)
@higherkind
sealed class Either<out A, out B> : EitherOf<A, B>() {