![](/img/trans.png)
[英]Haskell - “Type error in application”: “unification would give infinite type”
[英]Haskell - unification would give infinite type
我是Haskell的新手,我刚遇到此问题/错误。
我不知道发生了什么,也不太熟悉使用列表并将它们定义为(l:k)
...我真的不知道l和k被认为是什么... l是一个元素,并且k是一个列表?
无论如何,我将不胜感激有人向我解释了这些l和k东西,或者可能是在使用list的函数中解释了(l:t:k)
,也许是一种编写此简单delete函数的方法,假设该元素位于列表中,则可以所需元素的首次出现并将其删除,并返回新列表。
delete :: Eq b => b -> [b] -> [b]
delete r (l:k)
| inside r k = [l]:delete(r k)
| otherwise = k
模式l:k
做三件事:
l
绑定到列表的第一个元素 k
绑定到列表的其余部分。 如果您有一个非空列表,则想将项r
与l
进行比较。 如果它们相等,则只返回列表的其余部分。 否则,将l
放回递归调用产生的列表中。
如果列表为空,则还需要通过返回一个空列表来处理。 (从[]
删除r
会产生[]
。)
delete :: Eq b => b -> [b] -> [b]
delete r (h:t) | r == h = t -- h for head, t for tail
| otherwise = h : delete r t
delete _ [] = [] -- base case
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.