作为解决方案的一部分,我试图找到一种方法来将布尔匿名函数的值转换为相反的值。例如,我具有函数f
,如下所示:fn x => x > 8
。我想要像not
这样的运算符,它将把输出转换为相反的值,因此匿名者将实际计算fn x => x <= 8
。如下所示:
fun foo f x = not f x;
但是它不起作用,因为not
仅适用于布尔值。我知道我可以做到以下几点:
fun foo f x = if f x then false else true;
但是,我想以某种方式在没有任何ifs
的情况下做到这一点。有可能吗?
答案 0 :(得分:1)
已经有not
可以由谓词组成,例如喜欢:
val isntSpace = not o Char.isSpace
在OCaml的Base library中,有一个函数Fn.non
执行此操作:
fun non f x = not (f x)
看来您只不过是括号而已。
这可以让您写:
val isntSpace = non Char.isSpace