F# Pattern Match on Seq.Length

f#, pattern-matching

Solution

You could do either this:

match Seq.distinct [1; 1; 2] |> Seq.length with 
| 1 -> printf "one" 
| 2 -> printf "two" 
| _ -> printf "other"

or this:

Seq.distinct [1; 1; 2] 
|> Seq.length
|> function
    | 1 -> printf "one" 
    | 2 -> printf "two" 
    | _ -> printf "other"

But, as is, you're piping the output from `Seq.distinct` to a `match` expression and not `Seq.length` as you intend.

Problem

I'm learning some F# and messing around with pattern matching. I have the below code. ``` Seq.distinct [1; 1; 2] |> match Seq.length with | 1 -> printf "one" | 2 -> printf "two" | _ -> printf "other" ``` But when running or trying to compile it gives the error of: ``` This expression was expected to have type 'a -> int but here has type int ``` I'm not quite sure what the issue is and what exactly is being asked. I'm sure I'm missing something simple, but is there another way I should be doing this?

Original source