a
Size: a a a
a
I
I
trait IsoF[F[_], T1, T2] {
def to(in: T1): F[T2]
def from(in: T2): F[T1]
}
I
I
IsoF[F[_], T1, T2] <=> IsoF[F[_], T2, T1]
были и еще что-то полезное. ну как-то не вериться что мне одному такое понадобилосьa
F: Functor: Applicative: Monad
, будет иметь разные инстансыa
IsoF[F, A, B] ~ Iso[F[A], F[B]]
, т.е. по-крайней мере это категорияa
a
a
a
a
trait JsonCodec[A] {
def to(a: A): JsValue
def from(js: JsValue): Either[E, A]
}
a
a
a
F
λ
a
G[_]
a
IsoF[Either[E, ?], Id, A, JsValue]
a
I