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

Tri*_*Gao 7 f#

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

pad*_*pad 11

具体来说,您可以定义这样的值:

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

let stub1 (x : int) : float = undefined
let stub2 (x : 'T) : 'T = undefined
Run Code Online (Sandbox Code Playgroud)

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


Joh*_*mer 6

我认为

failwith "Not implemented"
Run Code Online (Sandbox Code Playgroud)

会非常相同


V.B*_*.B. 5

更具体和.NET友好的方式

let undefined<'T> : 'T = raise (NotImplementedException())
Run Code Online (Sandbox Code Playgroud)

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