Haskel的这个功能是做什么的?
我不明白递归在这里工作的方式
f[]=[]
f(x:xs)=x: [y|y <- f xs, x/=y]
Run Code Online (Sandbox Code Playgroud)
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)
| 归档时间: |
|
| 查看次数: |
116 次 |
| 最近记录: |