let makeElem
次のコードで値制限エラーが発生します。
let elemCreator (doc: XmlDocument) =
fun name (value: obj) ->
let elem = doc.CreateElement(name)
match value with
| :? seq<#XmlNode> as childs ->
childs |> Seq.iter (fun c -> elem.AppendChild(c) |> ignore)
elem
| _ -> elem.Value <- value.ToString(); elem
let doc = new XmlDocument()
let makeElem = elemCreator doc
elemCreator
から返された無名関数にジェネリックパラメーターがない場合、なぜ値制限エラーが発生するのですか?
コンパイラーは、推定されたmakeElemのタイプはであると述べてい(string -> 'a -> XmlNode)
ます。'a
しかし、なぜ私がそれを宣言したかのように2番目のパラメーターを推測するのobj
ですか?