How to return unit from an expressions in f#

4.1k views Asked by At

How can i return unit from an expression in f#? For example:

let readInt =
        let str = Console.ReadLine()
        let (succ, num) = Int32.TryParse(str)
        match succ with
        | true -> Some(num)
        | _ -> None

    match readInt with
    | Some(v) -> Console.WriteLine(v)
    | None -> ignore //i don't want to do anything,
//     but i don't know how to ignore this brunch of the expression
3

There are 3 answers

0
rkhayrov On BEST ANSWER

The (only possible) unit value in F# is written as

()

So your code becomes

...
| None -> ()
0
pad On

Keep in mind the unit value (), it is handy in many situations.

In this case, you could use iter function from Option module:

Option.iter Console.WriteLine readInt

It also highlights the fact that iter functions (e.g. those from Seq, List and Array module) will always give you the unit value ().

0
John Palmer On

Just write () as follows

match readInt with
    | Some(v) -> Console.WriteLine(v)
    | None -> ()