我在F#中有一个谓词
let myFunc x y = x < y
有没有办法创建这个函数的否定版本?
这与功能类似于
的东西let otherFunc x y = x >= y
但是使用原始的myFunc?
let otherFunc = !myFunc // not valid
答案 0 :(得分:9)
您要做的事情被称为&#34;功能组合&#34;。查看f#的函数组合运算符:
我没有可用于实验的编译器,但您可以从
开始let otherFunc = myFunc >> not
并逐步解决错误。
编辑:Max Malook指出这不适用于myFunc
的当前定义,因为它需要两个参数(从某种意义上说,这是功能土地)。所以,为了使这项工作,myFunc
需要转变为接受一个元组:
let myFunc (a, b) = a > b
let otherFunc = myFunc >> not
let what = otherFunc (3, 4)
答案 1 :(得分:3)
F#中的否定是使用函数not
完成的。 !
运算符用于解除引用ref
个单元格。
let otherFunc x y = not (myFunc x y)