定义删除功能

时间:2011-03-31 13:09:02

标签: list function haskell

我在练习时遇到了麻烦,请帮忙!

定义一个取整数的函数remove 整数列表作为输入并返回通过删除获得的列表 列表中第一次出现整数;

delete :: Int -> [Int] -> [Int]

4 个答案:

答案 0 :(得分:6)

我正在学习Haskell,所以我的答案不具有权威性。我试着写下我看待问题的方式,而不是发布我写的代码来回答你的问题。

我查看了各种情况(我发现这对Haskell有帮助):

  1. 从空列表中删除任何内容......这很容易

  2. 从非空列表(x)中删除某些内容(ys):

    2.1。 x等于ys的第一个元素?然后我就完了......

    2.2。否则我只需要从x的第一个元素

  3. 后面的列表中删除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 )
{
}

然后处理函数体

声明你需要的变量, 执行数组操作 返回结果数组。