Whats wrong with s.Count(Char.IsLetter)
compiler-errors, f#
Solution
I think it's an edge case of type inference wrt member overloading. The difference between `Count` and `Where` is that the former has two overloads with different number of arguments.
You can work around by specifying conversion from F# function to `System.Func<_, _>`:
s.Count(Func<_, _>(Char.IsLetter))
Of course, it's even uglier than the corresponding version:
s.Count(fun c -> Char.IsLetter(c))
You could file a bug at https://visualfsharp.codeplex.com/workitem/list/basic so that it may be fixed in the F# vNext.
Note that in F#, you don't often use Linq functions. You can either do:
s |> Seq.sumBy (fun c -> if Char.IsLetter c then 1 else 0)
or
s |> Seq.filter Char.IsLetter |> Seq.length
Problem
F# ``` let s = "bugs 42 bunny" s.Count(fun c -> Char.IsLetter(c)) s.Where(fun c -> Char.IsLetter(c)).ToArray() s.Where(Char.IsLetter).ToArray() s.Count(Char.IsLetter) // error ``` Why does only the last line fail to compile: Error FS0002: This function takes too many arguments, or is used in a context where a function is not expected