pakoito
02/04/2018, 2:53 AMHK becomes Kind. HK2 will be Kind2, HK3 is Kind3, etc
* The witness types will go from being suffixed with HK to being prefixed with For
* The typealias of HK<OptionHK, A> (now Kind<ForOption, A>) goes from being OptionKind<A> to OptionOf<A>
* The evidence/evaluation function will go from ev() to value(). The existing extension functions named value(), i.e. in Id, will become either result() or content() depending on the semantics of the datatype.
Here are a few examples of how these changes will look like:
HK<F, Int> -> Kind<F, Int>
HK<OptionHK, Int> -> Kind<ForOption, Int>
OptionKind<Int> -> OptionOf<Int>
Monad<OptionHK> -> Monad<ForOption>
OptionKind<ListKind<A>> -> OptionOf<ListOf<Int>>
HK<OptionHK, HK<ListHK, Int>> -> Kind<ForOption, Kind<ForList, Int>>
HK<HK<EitherHK, Throwable>, Int> -> Kind<Kind<ForEither, Throwable>, Int>
HK2<EitherHK, Throwable, Int> -> Kind2<ForEither, Throwable, Int>
Option.monad().binding { 1 }.value()