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

时间:2012-11-24 09:46:25

标签: scala unit-type curry-howard

通过Curry-Howard isomorphism Scala的Unit对应逻辑真,Nothing对应逻辑假。任何事物暗示逻辑真实的事实都是由一个简单的函数见证的,它只是抛弃了这个论点:

def toUnit[A](x: A): Unit = { }

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

总是可以做像

这样的事情
def fromNothing[A](n: Nothing): A = throw new RuntimeException();

但这只是丑陋 - 它没有使用Nothing没有值的事实。应该有办法如何做到没有例外。

1 个答案:

答案 0 :(得分:8)

你可以那样做

def emptyFunction[A]: Nothing => A = {n => n}

def emptyFunction[A](n: Nothing): A = n