Question

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
Was it helpful?

Solution

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

()

So your code becomes

...
| None -> ()

OTHER TIPS

Just write () as follows

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

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 ().

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top