F#中的底部/未定义值?

时间:2013-12-02 20:32:11

标签: f#

Haskell中有一个方便的undefined值,可用作代码中尚未定义的函数/路径的存根。在F#中有类似的东西吗?

3 个答案:

答案 0 :(得分:11)

具体来说,你可以定义这样一个值:

let undefined<'T> : 'T = failwith "Not implemented yet"

let stub1 (x : int) : float = undefined
let stub2 (x : 'T) : 'T = undefined

请注意F#评估是严格的。如果将undefined绑定到顶级值,则会在评估期间抛出异常。

答案 1 :(得分:6)

我认为

failwith "Not implemented"

几乎相同

答案 2 :(得分:5)

更具体和.NET友好的方式

let undefined<'T> : 'T = raise (NotImplementedException())

允许您跳过键入消息,并仍然将此异常与catch块或堆栈跟踪中的其他异常区分开来。