Ι想在列表中实现这种结构
Main> update 1 []
[1]
Main> update 2 [2]
[2]
Main> update 6 [1,2,5,8]
[1,2,5,8,6]
Main> 7 [7,7,7,3,4,5,8]
[3,4,5,8,7]
-}
我的代码是,
update :: Int->[Int]->[Int]
update n s
= update1 n s
update1 :: Int->[Int]->[Int]
update1 n (h:t)
| h==[] = n:
| n==h = update1 n t
| otherwise = h : update1 n t
和 为什么 我错了?
答案 0 :(得分:4)
请注意n:
不正确。您要做的是返回[n]
或n:[]
。您还可以使用模式匹配来检查空案例:
update1 :: Int->[Int]->[Int]
update1 n [] = [n]
update1 n (h:t)
| n == h = update1 n t
| otherwise = h : update1 n t