Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell排序函数_Haskell_Functional Programming_Sorting - Fatal编程技术网

Haskell排序函数

Haskell排序函数,haskell,functional-programming,sorting,Haskell,Functional Programming,Sorting,为什么Haskell的对数据进行排序。列表忽略第三位数字 Prelude>sort ["1","200","234","30"] ["1","200","234","30"] 编辑:对不起,我不知道那些是字符串。我的错。不,但它确实按照它应该做的那样对字符串进行排序:按字典排序 关系“200”使用字符串,而不是使用数字。 你应该考虑把字符串解析成数字。 尝试删除“”字符,看看它是否开始工作。我不是Haskell专家,但它似乎在对字符串进行词法排序。你能把它们变成整数吗?(可能类似于[1

为什么Haskell的
数据进行排序
。列表
忽略第三位数字

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”,并且此类排序“不正确”