首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Haskell - infinite将提供无限类型

Haskell - infinite将提供无限类型
EN

Stack Overflow用户
提问于 2018-04-06 20:31:43
回答 1查看 445关注 0票数 0

我是Haskell的新手,我刚遇到这个问题/错误。

我一点都不知道发生了什么,我也不太熟悉使用列表并将它们定义为(l:k)……我真的不知道l和k被认为是什么。L是一个元素,k是一个列表?

无论如何,我希望有人向我解释这些l和k的事情,或者可能在函数中使用list,或者使用(l:t:k)来编写这个简单的删除函数,它在给定元素在list中的情况下,找到所需元素的第一个出现,并删除它,返回新的list。

代码语言:javascript
复制
    delete :: Eq b => b -> [b] -> [b]
    delete r (l:k)
        | inside r k = [l]:delete(r k)
        | otherwise = k
EN

回答 1

Stack Overflow用户

发布于 2018-04-06 20:43:25

模式l:k做了三件事:

  1. 它告诉您,如果模式与

匹配,则列表不为空。

  1. l绑定到列表的第一个元素
  2. k绑定到列表的其余部分。

如果你有一个非空的列表,你想要将你的术语rl进行比较。如果它们相等,您只需返回列表的其余部分。否则,您将把l放回递归调用产生的列表中。

如果列表为空,您也需要处理该问题,只需返回一个空列表。(从[]中删除r通常会生成[]。)

代码语言:javascript
复制
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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49692885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档