“选项<单位 - >部&gt;类型和相等'使用F#</unit->

时间:2011-07-15 17:59:28

标签: function f# option

请考虑以下代码:

let fnOption = Some (fun () -> ())
fnOption = None

它出现以下错误:

  

init.fsx(2,1):错误FS0001:类型'(unit - &gt; unit)'不支持'equality'约束,因为它是一个函数类型

为什么?我忽视了什么吗?

2 个答案:

答案 0 :(得分:2)

目前还不清楚你要做什么。目前,第二行是相等测试,而不是赋值。如果您打算为fnOption分配一个新值,那么您需要将其变为可变:

let mutable fnOption = Some(fun () -> ())
fnOption <- None

如果你真的试图测试相等性,那么你看到的错误就是预期的结果,因为函数不具有可比性。

答案 1 :(得分:2)

如果你真的想检查是否相等(而不是分配值),那么你可以使用Option.isNone fnOption。如果你真的想分配,看看kvb的答案。