Есть ли функция Scala типа `Nothing => A`? Или как его построить?
Сквозь карри-ховардский изоморфизм Скалы Unit
соответствует логической истине и Nothing
к логическому ложному. Факт, что логическая истина подразумевается чем-либо, засвидетельствован простой функцией, которая просто отбрасывает аргумент:
def toUnit[A](x: A): Unit = { }
Есть ли функция, которая свидетельствует о том, что логическое ложь подразумевает что-либо, что является функцией типа Nothing => A
? Или есть идиоматический способ, как его построить?
Всегда можно сделать что-то вроде
def fromNothing[A](n: Nothing): A = throw new RuntimeException();
но это просто уродливо - он не использует тот факт, что Nothing
не имеет значений. Должен быть способ, как это сделать без исключений.
1 ответ
Решение
Вы можете сделать это
def emptyFunction[A]: Nothing => A = {n => n}
или же
def emptyFunction[A](n: Nothing): A = n