你需要一些parens:
negation (Some true)
要么:
negation <| Some true
没有像那样的P#编译器会理解该行为
(negation Some) true
因为函数应用程序是左绑定的,然后类型不匹配:否定需要是类型:('a -> option 'a) -> bool -> bool
显然不是(类型bool option -> bool option
)
另外:(包括意见)
调用否定函数not : bool -> bool
.你试图在选项包装的bool上使用它,所以也许这应该足够了:
let negation : bool option -> bool option = Option.map not