是否存在类型为"Nothing => A"的Scala函数?或者如何构建一个?

Pet*_*lák 2 scala curry-howard unit-type

通过Curry-Howard同构 Scala Unit对应逻辑真和Nothing逻辑假.逻辑真实被任何东西暗示的事实由一个简单的函数见证,该函数只是抛弃了这个论点:

def toUnit[A](x: A): Unit = { }
Run Code Online (Sandbox Code Playgroud)

是否有一个函数可以证明逻辑错误意味着什么,这是类型的函数Nothing => A?或者是否有一种惯用的方法来构建一个?

人们可以总是这样做

def fromNothing[A](n: Nothing): A = throw new RuntimeException();
Run Code Online (Sandbox Code Playgroud)

但这只是丑陋 - 它没有使用Nothing没有价值的事实.应该有一种方法如何做到没有例外.

Did*_*ont 8

你可以这样做

def emptyFunction[A]: Nothing => A = {n => n}
Run Code Online (Sandbox Code Playgroud)

要么

def emptyFunction[A](n: Nothing): A = n
Run Code Online (Sandbox Code Playgroud)