Embarrassingly, it took me almost seven years to notice the full meaning of
Option/Nullable type combined with mechanism like pattern matching.
The first layer is pretty obvious — consider such language as C# and its struct type. It is totally safe to use because it does not allow
null. The separate world is nullable struct, here you can use
null but your code is safer anyway because there is distinction between pure struct instance and nullable one. Until you write:
null and boom, you have exception in your hands. The problem in this case is you can access the internals of nullable type.
Skila does not have pattern matching, but similarly it treats
Option as black box — you cannot dereference it, you cannot access any of its member, the one thing you can do is decompose it. Conditionally:
if let printer ?= nullable_printer then printer.Print(); end
The optional declaration is successful only when we don’t have
null. This way working with
null is completely safe because compiler guarantees the logic flow is solid and you don‘t see any
NullException. One thing less to worry, so I call it a progress.