这个函数在Haskell中做了什么?

Oha*_*had 2 haskell

Haskel的这个功能是做什么的?

我不明白递归在这里工作的方式

 f[]=[]
 f(x:xs)=x: [y|y <- f xs, x/=y]
Run Code Online (Sandbox Code Playgroud)

med*_*ans 6

f[]=[]
f(x:xs) = x : [y|y <- f xs, x/=y]
Run Code Online (Sandbox Code Playgroud)

此函数从列表中删除重复项.以下是它的工作原理:

  • 基本情况下,列表为空,因此返回空列表.
  • 否则你采取第一个元素x,并假设(归纳假设)f xs给你没有重复的列表.现在,您唯一要做的就是确保不再插入x.因此,列表压缩意味着:取所有其余元素(通过归纳假设是唯一的),但删除x.

现在感觉好吗?

PS.你也可以写第二个条款: f(x:xs) = x : filter (/= x) (f xs)