我想根据 bool 值(参数之一)以不同方式应用 3 个参数函数。
我希望能够以中缀方式应用它,以便我可以链接它(下面的示例)。类似于以下内容,但实际上有效。
f :: Bool -> a -> a -> a
f True i j = i
f False i j = j
... y `(f True)` z `(f False)` b
我是否需要将 Bool 作为第二个变量?或者是其他东西?我有点失落。
附言我想这样做的原因是有可选的附加功能
最佳答案
infix notation for functions with more than two arguments是可能的,但不是很好。在你的情况下,给定
f :: Bool -> a -> a -> a
f True i j = i
f False i j = j
你可以写
(True `f` 1) 3
写起来要容易得多(正如其他人所建议的那样):
let ft = f True
let ff = f False
那么你可以做
1 `ft` 3 `ff` 5
如果您想使用
f
你应该写:(False `f` ((True `f` 1) 3)) 5
你可以验证
1 `ft` 3 `ff` 5 == (False `f` ((True `f` 1) 3)) 5
关于haskell - 任何人都知道如何使用部分应用的三参数函数中缀(haskell),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6354401/