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我想要这样做的原因是有可选的追加功能
具有两个以上参数的函数的中缀表示法是可能的,但不是很好.在你的情况下,给定
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)