The problem with options in non-ML languages is that invalid state is unrepresentable[1]. E.g, in Java Option<Integer> can either be null, empty, some with null and some with a number.
To solve this problem, a language have to disallow null/nil as a bottom type and provide nice syntax to initialize types with optional types.
[1]: https://geeklaunch.io/blog/make-invalid-states-unrepresentab...