Haskell排序函数
为什么Haskell的Haskell排序函数,haskell,functional-programming,sorting,Haskell,Functional Programming,Sorting,为什么Haskell的对数据进行排序。列表忽略第三位数字 Prelude>sort ["1","200","234","30"] ["1","200","234","30"] 编辑:对不起,我不知道那些是字符串。我的错。不,但它确实按照它应该做的那样对字符串进行排序:按字典排序 关系“200”使用字符串,而不是使用数字。 你应该考虑把字符串解析成数字。 尝试删除“”字符,看看它是否开始工作。我不是Haskell专家,但它似乎在对字符串进行词法排序。你能把它们变成整数吗?(可能类似于[1
对数据进行排序
。列表
忽略第三位数字
Prelude>sort ["1","200","234","30"]
["1","200","234","30"]
编辑:对不起,我不知道那些是字符串。我的错。不,但它确实按照它应该做的那样对字符串进行排序:按字典排序 关系
“200”<“30”
与“Hello”<“World”
的原因相同
因此,如果希望Haskell按数值排序,则必须对实际数字进行排序
import Data.List
import Data.Function
sortNumeric = sortBy (compare `on` (read :: String -> Int))
sortNumeric ["1", "200", "234", "30"]
但是:为什么您的“数字”列表中包含字符串?考虑使用正确的<代码> [INT] < /Cord>。< p>使用字符串,而不是使用数字。 你应该考虑把字符串解析成数字。
尝试删除“”字符,看看它是否开始工作。我不是Haskell专家,但它似乎在对字符串进行词法排序。你能把它们变成整数吗?(可能类似于
[1200234,30]
?)您对字符串进行排序,而不是数字——它是按“字母顺序”排序的,因此它按第一个字符排序,然后按下一个字符排序,依此类推。这与您经常看到名为“文件1”、“文件2”的文件的原因相同。。。“文件10”,并且此类排序“不正确”