История изменений
Исправление korvin_, (текущая версия) :
Таки запись T** несколько удобнее, чем Optional[Optional[T]].
Таки никто не мешает использовать унарный оператор для обозначения Optional и будет то же самое, только не костыльно.
let x :: **T in case x of
**valOfT -> doSomethingWithVal valOfT
{- *optOfT -> doSomethingWithOpt optOfT -}
_ -> {- got Nothing -}
Или посмотри, как в том же Хаскелле реализуются «цепочки» вызовов функций, принимающих значение типа, а возвращающих Maybe, например. Без всяких «специальных случаев» и вручную писать проверки не нужно.
Исходная версия korvin_, :
Таки запись T** несколько удобнее, чем Optional[Optional[T]].
Таки никто не мешает использовать унарный оператор для обозначения Optional и будет то же самое, только не костыльно.
let x :: **T in case x of
**valOfT -> doSomethingWithVal valOfT
{- *optOfT -> doSomethingWithOpt optOfT -}
_ -> {- got Nothing -}