λ
Size: a a a
λ
λ
GP
R
Oℕ
sealed trait Foo[+A, +B]
case class Bar[+A, +B](a: A, b: B) extends Foo[A, B]
case class Baz[+A, +B](la: List[A], lb: List[B]) extends Foo[A, B]
это простой АДТ или уже ГАДТ?R
sealed trait Foo[+A, +B]
case class Bar[+A, +B](a: A, b: B) extends Foo[A, B]
case class Baz[+A, +B](la: List[A], lb: List[B]) extends Foo[A, B]
это простой АДТ или уже ГАДТ?Oℕ
Oℕ
NV
sealed trait Foo[+A, +B]
case class Bar[+A, +B](a: A, b: B) extends Foo[A, B]
case class Baz[+A, +B](la: List[A], lb: List[B]) extends Foo[A, B]
это простой АДТ или уже ГАДТ?R
Quax[+A, +B, +C]
, то уже гадт?Oℕ
sealed trait Foo[+A, +B]
case class Bar[+A](a: A) extends Foo[A, String]
case class Baz[+A, +B](la: List[A], lb: List[B]) extends Foo[A, B]
вот это, например ГАДТNV
case object Kek extends Foo[Int, String]
GP
Quax[+A, +B, +C]
, то уже гадт?Oℕ
sealed trait Foo[+A, +B]
case class Bar[+A, +B, C](c: C, f: C => (A, B)) extends Foo[A, B]
case class Baz[+A, +B](la: List[A], lb: List[B]) extends Foo[A, B]
и
это тоже ГАДТOℕ
Oℕ
Oℕ
Oℕ
sealed trait Foo[+A, +B]
case class Bar[+A](a: A) extends Foo[A, String]
case class Baz[+A, +B](la: List[A], lb: List[B]) extends Foo[A, B]
вот это, например ГАДТOℕ
sealed trait Foo[+A, +B]
case class Bar[+A, +B, C](c: C, f: C => (A, B)) extends Foo[A, B]
case class Baz[+A, +B](la: List[A], lb: List[B]) extends Foo[A, B]
и
это тоже ГАДТOℕ