通过Curry-Howard isomorphism Scala的Unit
对应逻辑真,Nothing
对应逻辑假。任何事物暗示逻辑真实的事实都是由一个简单的函数见证的,它只是抛弃了这个论点:
def toUnit[A](x: A): Unit = { }
是否有一个函数可以证明逻辑错误意味着什么,这是Nothing => A
类型的函数?或者是否有一种惯用的方法来构建一个?
总是可以做像
这样的事情def fromNothing[A](n: Nothing): A = throw new RuntimeException();
但这只是丑陋 - 它没有使用Nothing
没有值的事实。应该有办法如何做到没有例外。
答案 0 :(得分:8)
你可以那样做
def emptyFunction[A]: Nothing => A = {n => n}
或
def emptyFunction[A](n: Nothing): A = n