考虑以下几点: {-# LANGUAGE GADTs, GADTSyntax #-}
data Test a where
Test :: Ord a => { first :: a, second :: a } -> Test a
comp :: Test a -> Bool
comp (Test fst snd) = fst < snd
构造Test与一个Ord约束声明。
无论左侧参数的方差,约束在下面的声明放在Ta和Tb失败类型检测: class A<+TCov, -TCon, [±]Ta as TCov, [±]Tb super TCon> {
public function __construct(private Ta $ta, private Tb $tb) {}
// [various methods making use of Ta
我想将构造函数中的参数传递给具有约束的泛型函数。有没有可能通过参数创建T的实例?像list.Add(new T(1)); namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
List<Base> list = new List<Base>();