在 F# 中创建否定谓词
Creating a negated predicate in F#
例如,我在 F# 中有一个谓词
let myFunc x y = x < y
有没有办法创建这个函数的否定版本?
所以功能上类似于
let otherFunc x y = x >= y
但是通过使用原来的myFunc?
let otherFunc = !myFunc // not valid
F# 中的否定是通过函数 not
完成的。 !
运算符用于取消引用 ref
个单元格。
let otherFunc x y = not (myFunc x y)
您正在尝试做的事情叫做 "function composition"。查看f#的函数组合操作符:
- In F# what does the >> operator mean?
我没有可用于实验的编译器,但您可以从
开始
let otherFunc = myFunc >> not
并解决错误。
EDIT:Max Malook 指出这不适用于 myFunc
的当前定义,因为它需要两个参数(从某种意义上说,这是函数式的-土地)。因此,为了使这项工作正常进行,myFunc
需要更改为接受元组:
let myFunc (a, b) = a > b
let otherFunc = myFunc >> not
let what = otherFunc (3, 4)
例如,我在 F# 中有一个谓词
let myFunc x y = x < y
有没有办法创建这个函数的否定版本?
所以功能上类似于
let otherFunc x y = x >= y
但是通过使用原来的myFunc?
let otherFunc = !myFunc // not valid
F# 中的否定是通过函数 not
完成的。 !
运算符用于取消引用 ref
个单元格。
let otherFunc x y = not (myFunc x y)
您正在尝试做的事情叫做 "function composition"。查看f#的函数组合操作符:
- In F# what does the >> operator mean?
我没有可用于实验的编译器,但您可以从
开始let otherFunc = myFunc >> not
并解决错误。
EDIT:Max Malook 指出这不适用于 myFunc
的当前定义,因为它需要两个参数(从某种意义上说,这是函数式的-土地)。因此,为了使这项工作正常进行,myFunc
需要更改为接受元组:
let myFunc (a, b) = a > b
let otherFunc = myFunc >> not
let what = otherFunc (3, 4)