我想排序列表中的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語句。它有如果表達式。什麼讓你懷疑他們的巢穴能力? –