Many languages have had an equivalent for years; some have added an equivalent recently.
- Haskell (and derivatives like Elm and PureScript)
- Rust
- OCaml
- F#
- Scala (and its predecessor Pizza)
- Kotlin
- C++
- C#
- Java
Languages like C++, C# and Java have to make major concessions for backward compatibility. Languages like Scala and Kotlin have to make concessions to interoperate with Java libraries but try to stick to the Optional
-equivalents in their “native” code. Languages like Haskell and Rust are as uncompromising as Swift.