任何人都知道如何使用部分应用的三个参数函数infix(haskell)

Rom*_*her 4 syntax haskell operators partial-application

我想基于布尔值(其中一个参数)以不同的方式应用3参数函数.

我希望能够以中缀的方式应用它,以便我可以链接它(例如下面的例子).类似下面的东西但实际上有效.

f :: Bool -> a -> a -> a

f True  i j = i
f False i j = j

... y `(f True)` z `(f False)` b
Run Code Online (Sandbox Code Playgroud)

我需要将Bool作为第二个变量吗?或者是其他东西?我有点迷茫.

PS我想要这样做的原因是有可选的追加功能

Mar*_*coS 6

具有两个以上参数的函数的中缀表示法是可能的,但不是很好.在你的情况下,给定

f :: Bool -> a -> a -> a
f True i j = i
f False i j = j
Run Code Online (Sandbox Code Playgroud)

你可以写

(True `f` 1) 3
Run Code Online (Sandbox Code Playgroud)

写作更容易(正如其他人的建议):

let ft = f True
let ff = f False
Run Code Online (Sandbox Code Playgroud)

那么你可以做到

1 `ft` 3 `ff` 5
Run Code Online (Sandbox Code Playgroud)

如果你想使用f你应该写:

(False `f` ((True `f` 1) 3)) 5
Run Code Online (Sandbox Code Playgroud)

你可以验证一下

1 `ft` 3 `ff` 5 == (False `f` ((True `f` 1) 3)) 5
Run Code Online (Sandbox Code Playgroud)