Поиск по объекту неопределенного типа - PullRequest
1 голос
/ 26 августа 2011

Я пытаюсь выяснить, почему это не компилируется.

type A() =
  member __.M(f:DateTime -> seq<int>) = ()
  member __.M(f:DateTime -> obj) = ()

let a = A()
a.M(fun d -> seq [d.Year]) // 'd' is indeterminate type

Если я удаляю вторую перегрузку или добавляю аннотацию типа к d, это происходит. Это потому, что какой-то аспект разрешения перегрузки возникает перед проверкой типа?

1 Ответ

1 голос
/ 26 августа 2011

Да, в основном перегрузки затрудняют вывод типов. В этом случае кажется, что вы надеетесь, что компилятор выполнит какое-то обобщение типов DateTime -> seq<int> и DateTime -> obj, чтобы получить DateTime -> ?, а затем продолжит, но я не думаю, что когда-либо такого рода "анти-объединение".

...