我刚刚开始这个很好的hashkell初学者教程:
在列表的这个页面上,他解释说,在字典顺序中比较列表,他给出了这个例子:
ghci> [3,2,1] > [2,10,100]
True
Run Code Online (Sandbox Code Playgroud)
从一些谷歌搜索看来,词典排序意味着按字母顺序或顺序数字排序(?),但我仍然无法理解这个评估为True.
我在这里遗漏了一些明显的东西,有人可以帮忙吗?
Tho*_*mar 20
计算结果True为3大于2.找到结果后,比较将在此处停止.他证明了2和10没有比较.数组比较的结果是true.如果第一个数组也以2开头,则会产生比较结果false.
当词典排序不能导致用户期望的是Windows中的文件名时,一个很好的例子.如果你有文件命名xyz1.txt,xyz2.txt,xyz10.txt和xyz20.txt,字典顺序将是:xyz1.txt,xyz10.txt,xyz2.txt, xyz20.txt
Yit*_*itz 14
"词典顺序"的意思类似于字典中单词的排序方式:如果每个列表的第一个元素相同,则比较第二个元素; 如果第二个元素相同,则比较三分之一; 如果一个列表在另一个列表之前用完了元素,则较短的列表是"较少".
除了其他答案之外:instance Ord列表[在GHC中]的实际定义几乎说明了一切:
instance (Ord a) => Ord [a] where
compare [] [] = EQ
compare [] (_:_) = LT
compare (_:_) [] = GT
compare (x:xs) (y:ys) = case compare x y of
EQ -> compare xs ys
other -> other
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6975 次 |
| 最近记录: |