【发布时间】:2017-08-16 23:42:33
【问题描述】:
所以我试图创建一个错误的排序函数,给定一个列表,在删除重复项的同时对其进行排序,然后用“0s”填充列表的开头以确保排序错误的新列表的长度是与原始列表的大小相同。
这是我的代码:
dodgySort4 xs = (replicate ((length xs) - (length (badQuick xs)) 0) : badQuick xs
where
badQuick [] = []
badQuick (x:xs) = (badQuick lesser) ++ [x] ++ (badQuick greater)
where
lesser = filter (< x) xs
greater = filter (> x) xs
但是,我在第一个 where 开始时不断收到“输入‘where’时的解析错误”错误,我不太确定问题出在哪里?
【问题讨论】:
-
@kennytm 哦,哎呀,这是我在写问题时犯的一个错误。实际代码没有换行
-
所以没有实际错误?或者有吗?顺便说一句,你的
badQuick真的很糟糕,它丢失了所有等于x的值,例如badQuick [1,1,1,1,1,1,1]将是[1]。 -
@Zeta 没有错误!我只是在将代码写入问题时不小心添加了新行。是的,哈哈,这就是 badQuick 的目的——它会删除所有重复项,这就是为什么我用 0 填充开头,所以它的长度与原始列表的长度相同...... (xs) = 长度(dodgySort4(x)
标签: haskell