Why is f inferred to be of type obj -> int and not seq<'T> -> int ?
let fseq (o:'T seq) : int = 0 //val fseq : o:seq<'T> -> int
let f = match true with //f : obj -> int
| true -> fun o -> fseq o
| false -> failwith ""
That leads to strange message such as the following later
let a : (obj -> int ) list = []
let a' = f::a //error yet type inference says f : obj -> int
ps : not really a problem, inference always has a limit and it is quite powerful in fsharp, but I am wondering why the type would be unified to obj in here.