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

标签 haskell syntax operators partial-application

我想根据 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/

相关文章:

javascript - 为什么 ISN'T `foo: ' bar'` 是 Javascript 中的语法错误?

c++ - 如何在 C++ 中创建静态类?

vb.net - VB.NET中有条件三元运算符吗?

Swift 3,自定义 "="等于运算符 ? (不相等, "==")

javascript - 我是否可以始终使用 `||` 来分配默认参数值?

c# - 混合扩展方法、泛型和 lambda 表达式

haskell - 如何在类 map 容器中将镜头定义为总和类型?

haskell - 如何在 Haskell 中实现 `cat` ?

Haskell hClose 阻塞

对 ANSI C 之前的语法中的函数调用感到困惑