Есть тип выражения expr : FixedType. Также есть полиморфный тип comp : TypeVar. Задача состоит в том, что нужно узнать, удовлетворяет ли тип expr типу comp. Все типы получаются динамически во время компиляции.
Сейчас использую проверку expr.TryRequire (comp) по аналогии с реализацией макроса foreach. Но такая проверка у меня невсегда срабатывает.
Например, полиморфный тип comp может выглядеть как void -> option [A]. Тогда если expr есть void -> option [?], то проверка срабатывает. Но если на вход поступает expr с типом void -> option [int-], то проверка обламывается, а не хотелось бы. В чем проблема и как ее решить? Кстати, а что такое int-?