我想排序列表中的3个元素。但是我“米有问题它翻译哈斯克尔。它是可能的,如果在Haskell报表?我一直在试图模式匹配做的嵌套,但它永远带我。是否有可能在Haskell中嵌套if语句?
if (x < y) {
if (z < x) swap(x,z);
} else {
if (y < z) swap(x,y);
else swap(x,z);
}
if(z<y) swap(y,z);
这是我曾尝试
intCMP :: Int -> Int -> Ordering
intCMP a b | a == b =EQ
| a < b = LT
| otherwise = GT
sort3 :: Ord a => (a -> a -> Ordering) -> [a] -> [a]
sort3 cmp [a,b,c] = if cmp a b == LT then
if cmp a c == Lt then
if cmp b c == LT then
[a,b,c]
else
[a,c,b]
else
[c,a,b]
else if cmp b c == LT then
if cmp a c == LT then
[b,a,c]
else
[b,c,a]
else
[c,b,a]
“是”此外,那些嵌套的if语句可以变平。 – user2864740
你是什么意思扁平? –
Haskell并不真的有if语句。它有如果表达式。什么让你怀疑他们的巢穴能力? –