Есть ли функция 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
Другие вопросы по тегам