从哪里可以获得 Haskell 代码编写的完整缩进规则集?
过去的问题与我的以下问题类似,导致我提出上述问题。错误消息背后的原因是什么:parse error on input 'something'
?
我收到的错误消息:
Baby.hs:103:2:输入“myList”时解析错误(此行中的错误)
我正在尝试编译的代码:
myList = ["aeroplane", "Aeroplane", "AeRoPlAne", "helicopter", "HELICOPTER", "Zebra"]
quicksort :: (Ord a) => [a] -> [a]
quicksort [] = []
quicksort (x:xs) =
let smallerSorted = quicksort [a | a <- xs, a <= x]
biggerSorted = quicksort [a | a <- xs, a > x]
in smallerSorted ++ [x] ++ biggerSorted
优化者编辑:
我将问题中的代码转移到新的 .hs 文件并尝试编译它。仍然存在类似的错误消息。详情如下:
Error
QuickSort.hs:5:62:输入“=”时解析错误
失败,已加载模块:无。
(0.02 秒,0 字节)
代码
快速排序 :: (Ord a) => [a] -> [a]
快速排序 [] = []
快速排序 (x:xs) =
让smallSorted = 快速排序[a | a 更大的排序 = 快速排序 [a | a x]
在较小的排序 ++ [x] ++ 更大的排序中
myList = [“飞机”、“飞机”、“AeRoPlAne”、“直升机”、“直升机”、“斑马”、“美国”]
至少对于标准Haskell(没有语言扩展),布局规则有解释在 Haskell 2010 报告的第 10.3 节中。 http://www.haskell.org/onlinereport/haskell2010/haskellch10.html#x17-17800010.3
根据您的口味,该报告可能有点正式。 Haskell 的各种教程和教科书对布局规则有一些更非正式的解释,例如哈斯克尔维基百科。 http://en.wikibooks.org/wiki/Haskell/Indentation
在您的特定情况下,错误消息指向第 103 行,但您只粘贴了几行。我可以看到至少 let-in 结构的缩进被破坏了。您应该编写如下内容:
xs = ["aeroplane", "Aeroplane", "AeRoPlAne", "helicopter", "HELICOPTER", "Zebra"]
quicksort :: (Ord a) => [a] -> [a]
quicksort [] = []
quicksort (x:xs) = let smallerSorted = quicksort [a | a <- xs, a <= x]
biggerSorted = quicksort [a | a <- xs, a > x]
in smallerSorted ++ [x] ++ biggerSorted
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)