F#允許簽名的「.NET」和「OCaml」格式。如果您習慣於使用一種風格,然後發現無法正確格式化所需簽名的情況,這可能會造成混淆。考慮以下代碼,這需要一個靈活的類型作爲函數的輸入輸出爲foo:簽名的「.NET」和「OCaml」格式化
let foo n (bar: int -> #seq<'a>) =
(fun() -> Vector.ofSeq (bar n))
let foobar n = Array.ofSeq([1..n])
let x = foo 10 foobar
我無法弄清楚如何表達#seq <「一> OCaml中的格式。可能嗎?
完美。我不確定F#團隊希望通過允許兩種簽名樣式。必須有一些優勢。我知道我不經意地混合了這些風格,這隻會讓人感到困惑。 –
@Jack OCaml風格是爲了向後兼容,.Net風格是因爲F#在.Net上(因此應儘可能使用它的樣式和約定)。 –