5
let f (O: obj) =
match O with
| :? (obj -> list<obj>) -> "win"
| :? list<obj> -> "list!"
| _ -> "fail"
Console.WriteLine(f(fun x -> ["lol"]))
Console.WriteLine(f(["lol"]))
打印「失敗」兩次,我想它應該,因爲我給我一個功能obj -> list<String>
,這不是obj -> list<obj>
。有什麼方法可以讓它們匹配嗎?在匿名函數出來之前,我可以將每個列表上傳到list<obj>
,或者在把它放入列表之前,我可以將所有內容上傳到obj
。F#模式匹配:匹配函數/子類型列表?
這些作品中的任何一個都可以匹配,但我認爲這是協變/逆變意味着已經解決的問題?糾正我,如果我錯了
F#不支持co/contravariance。 – Daniel