Remix.run Logo
dmkolobov 14 hours ago

It is crazy how much work comes out of Bruno Oliveira’s research groups.

Another cool online thing that exists is CP, a language with disjoint intersection and union types:

https://github.com/yzyzsun/CP-next

gavinray 5 hours ago | parent [-]

TypeScript has this functionality.

Additionally, Scala 3 does as well, including support for these generic "Type-Lambda" expressions I saw in one of the examples on the playground:

https://beta.plground.org/jnclma/CP_tutorial

  printNum = trait implements ExpSig<Eval => Print> {
In Scala 3, this would be roughly:

  trait ExpSig[F[_]]
  object printNum extends ExpSig[[A] =>> Eval[A] => Print]
https://docs.scala-lang.org/scala3/reference/new-types/type-...