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)
除了 if
或 Data.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"
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)
除了 if
或 Data.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"