Now that the C# 6 is finally going to have this long-anticipated ?. operator, is there similar thing in F#? And I'm not talking about ? operator.
Idiomatic F# doesn't have null values at all, so what use would it be? In F#, the most common way to model the absence of a value is to use option
.
When I need to interoperate with .NET code that may return null
, I convert it to an option as soon as possible, using a function like this:
let toOption (x : obj) =
match x with
| null -> None
| _ -> Some x
As soon as you have your value modelled as an option
, you can compose it with e.g. Option.map, and that serves the same purpose (but better, and safer) than the proposed C# operator.
In functional languages, conditional / compositional traversal, especial in nested structures is generally modelled using the notion of lenses which is explained with a succinct example in this SO thread.
In the F# environment, there's Aether; see intro article and guide, which builds on the Lenses support developed and written about by Mauricio Scheffer in FSharpx here.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With