Another cool online thing that exists is CP, a language with disjoint intersection and union types:
https://github.com/yzyzsun/CP-next
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> {
trait ExpSig[F[_]] object printNum extends ExpSig[[A] =>> Eval[A] => Print]
Another cool online thing that exists is CP, a language with disjoint intersection and union types:
https://github.com/yzyzsun/CP-next
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
In Scala 3, this would be roughly: https://docs.scala-lang.org/scala3/reference/new-types/type-...