我在练习时遇到了麻烦,请帮忙!
定义一个取整数的函数remove 整数列表作为输入并返回通过删除获得的列表 列表中第一次出现整数;
delete :: Int -> [Int] -> [Int]
答案 0 :(得分:6)
我正在学习Haskell,所以我的答案不具有权威性。我试着写下我看待问题的方式,而不是发布我写的代码来回答你的问题。
我查看了各种情况(我发现这对Haskell有帮助):
从空列表中删除任何内容......这很容易
从非空列表(x
)中删除某些内容(ys
):
2.1。 x
等于ys
的第一个元素?然后我就完了......
2.2。否则我只需要从x
的第一个元素
ys
醇>
答案 1 :(得分:5)
将delete视为构建没有相关元素的新列表,而不是删除元素本身。 (听起来像是家庭作业,所以我不会那么具体:))
答案 2 :(得分:0)
很抱歉给出答案,但是直接来自the source of Data.List
delete :: (Eq a) => a -> [a] -> [a]
delete = deleteBy (==)
deleteBy :: (a -> a -> Bool) -> a -> [a] -> [a]
deleteBy _ _ [] = []
deleteBy eq x (y:ys) = if x `eq` y then ys else y : deleteBy eq x ys
通常我会在这里描述它,但是如果你理解基本的递归,if语句,模式匹配和:
运算符,以及部分应用/ currying,那么它应该是不言自明的。请随意询问这些中的任何一个是否对您来说是陌生的。
答案 3 :(得分:-2)
首先:声明函数(查找函数声明如何工作) - 取决于它看起来类似的语言:
array
delete( int input1, array input2 )
{
}
然后处理函数体
声明你需要的变量, 执行数组操作 返回结果数组。