2012-04-20 67 views
0

我想将int插入到排序列表中的正确位置。例如,如果我插入2它将插入第二个位置。将int插入列表

insert :: Int -> [Int] -> [Int 
insert x [] = [x] 
insert x (y:ys) = if xsy 
       then x:y:ys else y insert x ys 

任何人都可以指出什么是错的。 感谢

+1

基本上,你完成了。它仍然是要修复一些错别字。 – 2012-04-20 23:43:02

+0

@DanielFischer欢呼 – ErHunt 2012-04-21 00:27:57

+1

“任何人都可以指出什么是错的” - 我相信编译器可以告诉你一两件事情有什么不对。学习理解编译器错误对于用任何语言进行编程都非常有用。 – 2012-04-21 16:16:02

回答

3

像丹尼尔·菲舍尔说,你刚才有几个错字:

  • xsy应该大概是x < y

  • 您在y insert x ys中缺少运算符;你需要什么操作员在列表上加上一个值? (提示:在与列表模式匹配时使用它。)

  • 您错过了[Int后的]

  • 您的缩进是错误的; then应该至少与if对齐,并且else应在新行上,并与then对齐。如果使用制表符缩进,则应该将编辑器设置为使用空格缩进(或者,如果必须,将其设置为将制表符显示为8个空格,这正是Haskell所期望的)。

除此之外,你很好去。