haskell 是否有条件运算符,例如 C++ 中的 "x == y ? a : b" 或 R 中的 ifelse(x==y, a, b)?

Does haskell have a conditional operator such as "x == y ? a : b" in C++ or ifelse(x==y, a, b) in R?

haskell 是否有一个条件运算符可以执行

x == y ? a : b

在 C++ 中或

ifelse(x==y, a, b)

在 R 中?

Haskell 的 if 完全符合您的要求。

if x == y then a else b

正如 Lee 提到的,Data.Bool 中有一个 bool 函数可以做同样的事情。另外,由于 Haskell 的懒惰,bool someLongComputation something True 不会 运行 长计算..

Data.Bool中有bool函数:

import Data.Bool
bool b a (x == y)

除了 ifData.Bool.bool 确实可以满足您的需求,您还可以在 Haskell!

中自己定义这样的运算符
infixr 1 ?
(?) :: Bool -> a -> a -> a
(True ? a) _ = a
(False ? _) b = b

GHCi> 3==2 ? "equal" $ "nonequal"
"nonequal"
GHCi> 3==3 ? "equal" $ "nonequal"
"equal"