Safe Haskell | None |
---|
AOP.Internal.LessGen
Documentation
class LessGen a b
If LessGen a b, then b is less general than a. That is, there exists substitution s such that (s b = a).
class LeastGen a b c
If LeastGen a b c holds then there exists a substitution s and type c such that (s c = (a, b)).
class Analyze a b | a -> b
Instances
~ * r (TCon0 Bool) => Analyze Bool r | |
~ * r (TCon0 Char) => Analyze Char r | |
~ * r (TCon0 Double) => Analyze Double r | |
~ * r (TCon0 Float) => Analyze Float r | |
~ * r (TCon0 Int) => Analyze Int r | |
~ * r (TCon0 Int8) => Analyze Int8 r | |
~ * r (TCon0 Int16) => Analyze Int16 r | |
~ * r (TCon0 Int32) => Analyze Int32 r | |
~ * r (TCon0 Int64) => Analyze Int64 r | |
~ * r (TCon0 Integer) => Analyze Integer r | |
~ * r (TCon0 Ordering) => Analyze Ordering r | |
~ * r (TCon0 Word8) => Analyze Word8 r | |
~ * r (TCon0 Word16) => Analyze Word16 r | |
~ * r (TCon0 Word32) => Analyze Word32 r | |
~ * r (TCon0 Word64) => Analyze Word64 r | |
~ * r (TCon0 ()) => Analyze () r | |
~ * r (TVar a) => Analyze a r | |
(Analyze a1 ra1, ~ * r (TCon1 c ra1)) => Analyze (c a1) r | |
(Analyze a1 ra1, Analyze a2 ra2, ~ * r (TCon2 c ra1 ra2)) => Analyze (c a1 a2) r | |
(Analyze a1 ra1, Analyze a2 ra2, Analyze a3 ra3, ~ * r (TCon3 c ra1 ra2 ra3)) => Analyze (c a1 a2 a3) r | |
(Analyze a1 ra1, Analyze a2 ra2, Analyze a3 ra3, Analyze a4 ra4, ~ * r (TCon4 c ra1 ra2 ra3 ra4)) => Analyze (c a1 a2 a3 a4) r | |
(Analyze a1 ra1, Analyze a2 ra2, Analyze a3 ra3, Analyze a4 ra4, Analyze a5 ra5, ~ * r (TCon5 c ra1 ra2 ra3 ra4 ra5)) => Analyze (c a1 a2 a3 a4 a5) r |
class LeastGen' a b c sin sout | sin a b c -> sout
Instances
(MapsTo sin (a, b) c', VarCase c' (a, b) c sin sout, Analyze c (TVar c)) => LeastGen' a b c sin sout | |
LeastGen' (TCon0 a) (TCon0 a) a s0 s0 | |
(LeastGen' a1 b1 c1 s0 s1, ~ * (d c1) c) => LeastGen' (TCon1 d a1) (TCon1 d b1) c s0 s1 | |
(LeastGen' a1 b1 c1 s0 s1, LeastGen' a2 b2 c2 s1 s2, ~ * (d c1 c2) c) => LeastGen' (TCon2 d a1 a2) (TCon2 d b1 b2) c s0 s2 | |
(LeastGen' a1 b1 c1 s0 s1, LeastGen' a2 b2 c2 s1 s2, LeastGen' a3 b3 c3 s2 s3, ~ * (d c1 c2 c3) c) => LeastGen' (TCon3 d a1 a2 a3) (TCon3 d b1 b2 b3) c s0 s3 | |
(LeastGen' a1 b1 c1 s0 s1, LeastGen' a2 b2 c2 s1 s2, LeastGen' a3 b3 c3 s2 s3, LeastGen' a4 b4 c4 s3 s4, ~ * (d c1 c2 c3 c4) c) => LeastGen' (TCon4 d a1 a2 a3 a4) (TCon4 d b1 b2 b3 b4) c s0 s4 | |
(LeastGen' a1 b1 c1 s0 s1, LeastGen' a2 b2 c2 s1 s2, LeastGen' a3 b3 c3 s2 s3, LeastGen' a4 b4 c4 s3 s4, LeastGen' a5 b5 c5 s4 s5, ~ * (d c1 c2 c3 c4 c5) c) => LeastGen' (TCon5 d a1 a2 a3 a4 a5) (TCon5 d b1 b2 b3 b4 b5) c s0 s5 |