How to compute variance of a type
 Tom_Primožič
[
Home
]
[ Index:
by date

by threads
]
[ Message by date: previous  next ] [ Message in thread: previous  next ] [ Thread: previous  next ]
[ Message by date: previous  next ] [ Message in thread: previous  next ] [ Thread: previous  next ]
Date:   (:) 
From:  Tom_Primožič <tom.primozic@g...> 
Subject:  How to compute variance of a type 
I am writing a type inference engine for a simple MLlike language, and I am wondering how to infer the variance of type parameters. I know a little about variance already, so I could figure it out for some basic cases, like in type type ('a, 'b) funct = 'a > 'b the type variable 'a is contravariant, and 'b is covariant, and in case one variable would be co and contravariant at the same time, it is invariant type ('a, 'b) both = Left of 'a > 'b  Right of 'b > 'a. But I have no idea on how to compute variance of complex types, like type ('a, 'b, 'c) long_funct = ('a > 'b) > 'c since the whole ('a > 'b) is in contravariant position, so 'a is twice contravariant, and b is first contra, and the covariant. Any resources?