【发布时间】:2019-05-09 20:45:14
【问题描述】:
我想对列表的前三个元素进行排序,但保持其他元素不变。而且我不想使用任何库函数,因为我是 Haskell 的新手。
这是我目前所拥有的:
{-# OPTIONS_GHC -Wincomplete-patterns #-}
sort2 (x, y) = if x > y then (y,x) else (x,y)
sort3 (x,y,z)
| x > y && y > z = (z,y,x)
| x > z && z > y = (y,z,x)
| y > x && x > z = (z,x,y)
| y > z && z > x = (x,z,y)
| z > x && x > y = (y,x,z)
| z > y && y > x = (x,y,z)
| otherwise = (0,0,0)
--sortfirst3 :: [Int] -> [Int]
sortfirst3 (x:y:z:v:xs) = sort3(x,y,z) : sortfirst3 (v:xs)
我正在尝试对前三个元素进行排序,将它们放入一个列表中,然后将其他元素放入另一个列表中,然后将它们相互连接。但是,由于元组和列表的类型不同,这会产生错误。我还有其他方法吗?
【问题讨论】:
标签: haskell