Если я определяю такой тип:
type Foo = Items of seq<int>
Я могу создать Foo
следующим образом:
Items [1;2;3]
Однако следующее не работает:
[1;2;3] |> Items
Сообщение об ошибке:
Type mismatch. Expecting a
int list -> 'a
but given a
seq<int> -> Foo
Разве компилятор не может преобразовать int list
в seq<int>
? Если конструктор Items
был нормальной функцией, я мог бы вызвать его в любом случае:
let length ints = Seq.length ints
printfn "%A" (length [1;2;3])
printfn "%A" ([1;2;3] |> length)