f# - 该值不是函数,无法应用

标签 f#

非常简单的否定运算函数。

let negation (value:option<bool>) =
   match value with
   |Some true -> Some false
   |Some false -> Some true
   |None -> failwith "OOPS"

但是当我调用它时:

negation Some true 

它提示说

This value is not a function and cannot be applied

最佳答案

那里需要一些 parent :

negation (Some true)

或者:

negation <| Some true

如果没有这样的括号,F# 编译器会将该行理解为

(negation Some) true

因为函数应用程序是左绑定(bind)的,然后类型不匹配:否定需要是类型:('a -> option 'a) -> bool -> bool 这显然不是't(类型为 bool option -> bool option)

此外:(包括意见)

否定函数称为 not : bool -> bool。您正在尝试在选项包装的 bool 上使用它,所以也许这就足够了:

let negation : bool option -> bool option = Option.map not

关于f# - 该值不是函数,无法应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34615815/

相关文章:

f# - 计算 F# 中元组列表的最小值和最大值

f# - WebSharper F# - 如何运行使用 VS Code 和 Ionide 创建的模板项目?

F# 将一个 seq 映射到另一个长度较短的 seq

arrays - 在 F# 上定义特定类型的新数组

F# 元组、System.Tuple 和集合 - 类型约束不匹配?

f# - 在FSX文件中包含文件?

design-patterns - 如何创建函数集合?

types - 如何在 F# 中自动执行 map 查找链?

.net - F#中如何实现二叉搜索树的add操作?

algorithm - 实现极小极大算法