【发布时间】:2012-03-13 21:26:58
【问题描述】:
我在以下代码中得到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)。但是,如果我将第二个参数声明为obj,为什么它会将第二个参数推断为'a?
【问题讨论】:
标签: f# value-restriction