sealed abstract
Leibnizian equality: a better =:=
This technique was first used in Typing Dynamic Typing (Baars and Swierstra, ICFP 2002).
It is generalized here to handle subtyping so that it can be used with constrained type constructors.
Leibniz[L,H,A,B]
says that A
= B
, and that both of its types are between L
and H
. Subtyping lets you
loosen the bounds on L
and H
.
If you just need a witness that A
= B
, then you can use A===B
which is a supertype of any Leibniz[L,H,A,B]
The more refined types are useful if you need to be able to substitute into restricted contexts.
- Companion
- object
class Object
trait Matchable
class Any