首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Erlang中删除后返回的列表很奇怪,有谁能解释一下吗?

在Erlang中,删除列表中的元素后返回的结果可能会让人感到奇怪。这是因为Erlang中的列表是不可变的,即一旦创建就不能被修改。当我们删除列表中的元素时,实际上是创建了一个新的列表,其中不包含被删除的元素。

具体来说,当我们使用Erlang的列表操作函数如lists:delete/2来删除列表中的元素时,该函数会返回一个新的列表,其中不包含被删除的元素。原始列表并没有被修改,仍然保持不变。这种设计是为了保持Erlang的函数式编程特性,确保数据的不可变性和纯粹性。

这种行为可能与其他编程语言中的列表操作函数不同,因为其他语言中的列表通常是可变的,可以直接修改。但在Erlang中,为了避免并发访问和副作用带来的问题,列表被设计为不可变的。

对于这个问题,我们可以通过以下方式来解释:

  1. Erlang中的列表是不可变的,删除元素实际上是创建了一个新的列表,原始列表保持不变。
  2. 这种设计保持了Erlang的函数式编程特性,确保数据的不可变性和纯粹性。
  3. 删除后返回的列表可能会让人感到奇怪,因为在其他编程语言中,列表通常是可变的,可以直接修改。
  4. 在Erlang中,我们可以使用列表操作函数如lists:delete/2来删除列表中的元素,并获取一个新的不包含被删除元素的列表。
  5. 这种行为与其他编程语言中的列表操作函数不同,但是符合Erlang的设计理念和语言特性。

对于Erlang中删除后返回的列表的奇怪行为,腾讯云没有直接相关的产品或服务。但是,腾讯云提供了云计算基础设施和解决方案,如云服务器、云数据库、云存储等,可以帮助开发者构建和部署Erlang应用程序。您可以访问腾讯云官方网站(https://cloud.tencent.com/)了解更多信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Erlang 入坑指南

又过了一段时间,当我们掌握了 OTP,写了很牛的 Erlang 程序,将其发布到生产环境中,然后服务器挂了,不得不调试找 bug,看erl_crash.dump。...Erlang 其实是一门很小的语言,在某种程度上讲,我真希望 Erlang 能支持更多的语法糖和函数,这样写起平时的业务逻辑也能简单不少。...我们假设这个loop函数会递归调用自己,这样我们的进程不会一下就死掉。spawn 会返回一个进程ID ,我们将其绑定到 Pid 变量中,并向其发个消息 hello。...Erlang 里用惊叹号 ! 发消息。好了,以上就是异步消息发送。这也是 Erlang 中两个进程之间交流的唯一手段。 ---- 当消息被发给某进程后,该进程如何收消息呢?...在 Erlang 中也没有必要记住每个进程的 Pid,给其注册个名字即可以后用名字来访问之。

2.2K10

运维定位服务故障时,前5分钟都在忙啥?

基础架构(物理的、逻辑的)的文档是否能找到? 是否有监控平台可用? (比如Munin、Zabbix、 Nagios、 New Relic… 什么都可以) 是否有日志可以查看?....$ w $ last 用这两个命令看看都有谁在线,有哪些用户访问过。这不是什么关键步骤,不过最好别在其他用户正干活的时候来调试系统。有道是一山不容二虎嘛。...在netstat显示的服务列表中的PID 和 ps aux 进程列表中的是一样的。 如果服务器上有好几个Java或者Erlang什么的进程在同时运行,能够按PID分别找到每个进程就很重要了。...六、CPU 和内存 $ free -m $ uptime $ top $ htop 注意以下问题: 还有空余的内存吗? 服务器是否正在内存和硬盘之间进行swap? 还有剩余的CPU吗?...是否有大文件被删除但没有清空? 如果磁盘空间有问题,你是否还有空间来扩展一个分区?

78620
  • 在服务器上排除问题的头五分钟(干货)

    在 netstat 显示的服务列表中的 PID 和 ps aux 进程列表中的是一样的。...如果服务器上有好几个 JAVA 或者 Erlang 什么的进程在同时运行,能够按 PID 分别找到每个进程就很重要了。 通常我们建议每台服务器上运行的服务少一点,必要时可以增加服务器。...六、CPU 和内存 $ free -m $ uptime $ top $ htop 注意以下问题: 还有空余的内存吗? 服务器是否正在内存和硬盘之间进行 swap? 还有剩余的 CPU 吗?...是否有大文件被删除但没有清空? 如果磁盘空间有问题,你是否还有空间来扩展一个分区?...conntrack_max 是否设的足够大,能应付你服务器的流量? 在不同状态下(TIME_WAIT, …) TCP 连接时间的设置是怎样的?

    1.1K30

    基于Erlang语言的视频相似推荐系统 | 深度

    的相似度列表,将A添加进去,同时删除原来B的相似列表中相似度最低的视频。...挂掉了,这时会将该挂掉的Slaver从计算列表中删除,后续新的计算任务不再分配给该Slaver。...B:need_computing_id: 记录哪些视频还没有计算相关视频推荐列表,针对这些视频在任务分配模块中分派给Slaver节点计算,分配出去后将该视频从待计算列表中删除,避免重复计算。...上面提到worker中包含的计算部分,即是基于我们在第二部分中的公式进行计算的。当某个视频最相似的TopN计算完成后,worker会将推荐列表插入Riak集群,供前端接口调用。...、演职员、海报图等在前端展示需要用到的节目metadata信息,这些信息我们存在Redis集群中)填充完整后返回给用户。

    1K30

    在服务器上排除问题的头 5 分钟

    故障影响的特定用户群是什么样的(已登录的, 退出的, 某个地域的…)? 基础架构(物理的、逻辑的)的文档是否能找到? 是否有监控平台可用?...在netstat显示的服务列表中的PID 和 ps aux 进程列表中的是一样的。 如果服务器上有好几个Java或者Erlang什么的进程在同时运行,能够按PID分别找到每个进程就很重要了。...六、CPU 和内存 $ free -m $ uptime $ top $ htop 注意以下问题: 还有空余的内存吗? 服务器是否正在内存和硬盘之间进行swap? 还有剩余的CPU吗?...是否有大文件被删除但没有清空? 如果磁盘空间有问题,你是否还有空间来扩展一个分区?...conntrack_max 是否设的足够大,能应付你服务器的流量? 在不同状态下(TIME_WAIT, …)TCP连接时间的设置是怎样的?

    76420

    在服务器上排除问题的头 5 分钟

    故障影响的特定用户群是什么样的(已登录的, 退出的, 某个地域的…)? 基础架构(物理的、逻辑的)的文档是否能找到? 是否有监控平台可用?...在netstat显示的服务列表中的PID 和 ps aux 进程列表中的是一样的。 如果服务器上有好几个Java或者Erlang什么的进程在同时运行,能够按PID分别找到每个进程就很重要了。...六、CPU 和内存 $ free -m $ uptime $ top $ htop 注意以下问题: 还有空余的内存吗? 服务器是否正在内存和硬盘之间进行swap? 还有剩余的CPU吗?...是否有大文件被删除但没有清空? 如果磁盘空间有问题,你是否还有空间来扩展一个分区?...conntrack_max 是否设的足够大,能应付你服务器的流量? 在不同状态下(TIME_WAIT, …)TCP连接时间的设置是怎样的?

    27530

    【Go 语言社区】有关GO和Erlang的一些思考

    工具   在不依赖于第三方工具的情况下能轻松使用第三方库来构建可执行文件,这都是GO的亮点。虽然这些工具不太完美,但有一些工具能弥补这些缺点,比如说Godep。对于GO来说这也是一大胜利。   ...虽然这是一种进步,但还是滞后于Erlang的减少计算和最近为改进C集成而新增的脏调度。 垃圾收集   在GO中垃圾收集是全局标记和清理垃圾的。...在清理垃圾时会暂停所有的goroutine,而且等待时间很恐怖。低等待时间是很困难的,执行时间越长,它就能为你做的越好。 错误处理   如果返回值为nil,不仅仅只是没有异常和使用检查。...Erlang有骄人的追踪能力,一些工具是建立在这些能力上的,比如recon_trace。Erlang的内省很好的改善了开发,同时也能更好的维护复杂的系统。...GO的channel,不可识别的goroutine和缺乏模式将goroutine分割成独立的模块会让代码变得更难写。   GO能改变、应该改变吗?

    1.3K110

    Elixir和ScyllaDB教你创建CRUD CLI,惊人的效率提升!

    安装完成后,我们将准备安装以在我们的项目中接收最新版本的 Erlang 和 Elixir。...$ asdf global erlang latest您在安装时遇到任何问题吗?...好吧,run_query返回一个完整的映射列表及其各自的值,因此我们用它Enum.each来处理列表中的每个索引。...删除嗯,该delete命令有点复杂,因为我们需要用户输入他想要删除的索引,并根据返回的索引列表对其进行验证!...);我们打印这些值;我们在中添加了完整的列表songs;我们等待用户输入一个条目,说明他想要删除哪个索引,然后我们解析将保存在的条目input;我们检查输入的索引是否存在于songs;如果你是:我们创建查询

    48630

    RabbitMQ——短连接惹的祸

    【前言】 最近在生产环境出现了一个奇怪问题,并且该问题多次出现,问题排查过程中对一些线索大胆猜测其问题的原因,最终找了了问题的根因。这里进行总结,方便后续回顾。...erlang中的每个进程都各自有一个邮箱,进程与进程通信的方式是将消息投递到对方的邮箱中,进程对邮箱中的消息采用模式匹配的方式进行处理(模式匹配涉及erlang的语法知识,这里不展开说明,读者可先简单理解为从邮箱中逐一取出消息并进行处理...这里说的进程邮箱也就是rabbitmq_top插件开启后,web界面上显示的Erlang mailbox;而这里说的buffer,就是web界面上显示的gen_server2 buffer。...【彩蛋】 结合前面提到的消息优先级,设想这么一种场景: 假如生产者发送消息后,消息还在队列的buffer中排队等待处理,此时生产者关闭了通道或TCP连接,这种情况下,生产者发送的消息还能被队列正确处理吗...如果能处理的话,是不是意味着队列进程字典中还会记录对应的credit_to信息?如果记录了,那么这个记录还有机会被删除吗?

    93220

    你了解你的数据吗(元婴篇):血缘分析

    0x00 前言 本篇是《你了解你的数据吗》的第五篇,在前面的几篇文章中,我们聊到了数据接入量、数据的坑、数据核心维度分布、数据口径和数据质量监控。...过了一段时间后,业务侧的感觉你提供的数据中有个字段总是不太对劲,其实就是怀疑你的数据出问题!需要你来追踪一下这个字段的来源。...或者说,你从 Table X 定位到了异常的字段原来来自于其它小伙伴处理的表 Table J,然后继续向前回溯,找到了这张表在处理过程中的某一个步出现了问题。 上面的过程是数据血缘分析的过程。...比如说现在你的小伙伴要调整自己开发的 Table J,这时候如果他不知道有谁在依赖这张表,冒然修改的话会带来毁灭性的伤害,但是有数据血缘分析的时候,至少能知道谁在使用这份数据。...其实总的说来,数据血缘能帮你更好地理解自己的数据! 0x03 关于实现 实现的话不打算在这里多聊,因为数据血缘一般是和元数据管理紧紧绑定起来的,在设计元数据管理系统的时候应该要考虑到数据血缘的内容。

    8.1K83

    面试官:你能说一下Redis的常见应用场景吗?

    另外,Redis的所有数据在使用时都存放在内存中。2021Java面试宝典 这包含了两层含义: 单台Redis能存放多少数据,取决于其内存的大小(假设所有内存都给Redis用)。...Redis支持将数据持久化到磁盘中。 但是,不会直接对磁盘进行读写。这种持久化,一般是用于在服务器重启时,先把数据持久化,重启后再从磁盘中读取到内存。...每个key对就的value存储的内容最大为512M。 Hash即哈希表,即key-value对集合。 是不是很奇怪?Redis的数据本身不就是key-value型的吗?其实不奇怪。...很适合做如朋友圈动态列表或消息队列等。 Set即集合。 它的value和列表的value一样,也是一个字符串列表,只是Set是无序的,并且,value中的元素是不重复的。...由于redis把数据添加到队列是返回添加元素在队列的第几位,所以可以做判断用户是第几个访问这种业务。队列不仅可以把并发请求变成串行,并且还可以做队列或者栈使用。

    62700

    Erlang Concurrent 并发进阶

    在一个Erlang程序中很容易创建并行执行(parallel execution)的线程,并且运行这些这些线程互相通信。Erlang中,每个执行线程称之为进程(process)。...Erlang的实现是很机智的,在每个receive中它会尽可能的最小化每个消息的模式匹配次数。 现在回到ping pong的例子。 "Pong"等待消息。...Erlang编译器很“聪明”,它会进行代码优化,以至于它真的会变成一个循环而不是函数调用。但是这只限于在这个调用后没有其它工作。这会导致进程(译注:的内存占用)在每次循环后变得越来越大。...,只是如果找到就删除它并返回剩余列表: 5> lists:keydelete(a, 2, [{x,y,z},{b,b,b},{b,a,c},{q,r,s}])....在lists模块有很多有用的函数。 一个Erlang进程(概念上的)会一直运行直到它执行receive结构,直到遍历消息队列后没有发现和receive结构中的模式相匹配的消息。

    2.5K40

    python中创建集合的语句_Python 集合(set) 介绍

    即是经理也是技术员的有谁?#2. 是经理,但不是技术人员的都有谁?#3. 是技术人员,但不是经理的人都有谁?#4. 张飞是经理吗?#5. 身兼一职的人都有谁?#6. 经理和技术人员共有几个人?  ...",len(l|j))  集合的方法:  #方法      # 意义  S.add(e)        #在集合中添加一个新的元素e;如果元素已经存在,则不添加  S.remove(e)        ...#从集合中删除一个元素,如果元素不存在于集合中,则会产生一个KeyError错误  S.discard(e)         #从集合S中移除一个元素e,在元素e不存在时什么都不做;  S.clear(...)       #清空集合内的所有元素  S.copy()        #将集合进行一次浅拷贝  S.pop()        #从集合S中删除一个随机元素;如果此集合为空,则引发KeyError异常... S.update(s2)        #等同于 S l= s2, 用 S与s2得到的全集更新变量S  S.difference(s2)        #S - s2 补集运算,返回存在于在S中,但不在

    1.8K30

    如果编程语言是车,那么你开的是……

    如果你告诉人们你开的是Ada,人们会忍不住大笑,但说真的,你真的想在战区开跑车吗? ?...# C++是C赛车的增强版 它有几十个额外的功能,每250英里就会出现故障,但当它出现故障时,没有人能找出哪里出了问题。 ? # Erlang是一支车队 所有人都在合作,把你送到你想去的地方。...这需要练习才能用一只脚在几辆车中的每一辆车里开车,但是一旦你学会了如何在地形上开车,那就很难用其他方式导航了。 另外,因为你用的车太多了,即使有几辆抛锚也没关系。 ?...# PHP是经过改造的多功能驾驶器 它很奇怪,很难操作,但每个人都想驾驶它。 ? # Python是一辆很棒的初学者用车 你可以在没有驾照的情况下驾驶它。...然而,其他司机抱怨说,Ruby汽车的许多控制被重复或三重,其中一些重复的控制在奇怪的情况下做了略有不同的事情,使汽车比应有的更难驾驶。有传言说,重新设计的工作正在进行中。 ?

    62020

    那些年,我追过的语言

    这种狂热自win95走上高潮(有谁还记得win95光盘里带的Good Times的MV,请举手),历经《未来之路》,windows2000,最后在dotnet发布后到达顶峰。...C#无法在我的兼职生涯中施展拳脚,只能作为又一个参赛语言或者研究院语言,被我拿着招摇撞骗(那时讲dotnet就好比现在的云计算,大数据,很容易把不懂的人侃晕),写着连我自己也不相信的虚拟企业信息集成系统...concurrency自然少不了Joe Amstrong的erlang。erlang相对于我理解的那些语言,有点不食人间烟火的意味。 在erlang身上我贪婪地攫取了很多知识。...erlang适应起来很难,尤其你想表达 x=x+1时会感觉那么地痛苦与无助。我颇花了一些时间才搞明白 atoi() 在erlang中究竟怎么实现。...也许你会问:一门语言究竟多久能掌握? 学精一门语言,也许需要花上三五年的功夫,也许还要更长。 但学精了一门语言后,学第二门一周也就该能入门了(erlang, haskell, lisp除外)。

    2K50

    Redis介绍

    它提供了Java,Python,Ruby,Erlang,PHP客户端,使用很方便。 三、 Redis与其他key-value存储有什么不同? 主要有以下两个方面。...换句话说,Redis的存储极限是系统中的可用内存值。 六、如果数据集需要使用非常大的内存,但不希望使用一致性哈希或其他方式将数据集分布在不同的节点,还能采用Redis吗?...key string — 将某个值加入到一个key列表末尾 LLEN key — 列表长度 LRANGE key start end — 返回列表中某个范围的值,相当于mysql里面的分页查询那样 LTRIM...key start end — 只保留列表中某个范围的值 LINDEX key index — 获取列表中特定索引号的值,要注意是O(n)复杂度 LSET key index value — 设置列表中某个位置的值...— 删除元素 SCARD key — 返回集合大小 SISMEMBER key member — 判断某个值是否在集合中 SINTER key1 key2 ... keyN — 获取多个集合的交集元素

    62610

    值得收藏!Redis五大数据类型应用场景(二)

    Redis还为集合提供了求交集、并集、差集等操作,可以非常方便的实现如共同关注、共同喜好、二度好友等功能,对上面的所有集合操作,你还可以使用不同的命令选择将结果返回给客户端还是存集到一个新的集合中。...实现方式: set 的内部实现是一个 value永远为null的HashMap,实际就是通过计算hash的方式来快速排重的,这也是set能提供判断一个成员是否在集合内的原因。...在最新的评论边上我们有一个“显示全部”的链接,点击后就可以获得更多的评论。我们假设数据库中的每条评论都有一个唯一的递增的ID字段。...每次新的新闻贴上来后,我们将ID添加到列表中,使用LPUSH + LTRIM,确保只取出最新的1000条项目。有一项后台任务获取这个列表,并且持续的计算这1000条新闻中每条新闻的最终得分。...想知道特定用户的数量吗?

    1.7K20

    生信提升day2-婷

    ,就是从第四以后就感觉很奇怪,老师说的和我有运行的是两个东西 练习后的截图,有不对的请指正 1.print working directory(pwd),显示当前路径 /home/bio07 是我的当前路径...2.make directory-- 创建你的空目录 3.ls -显示列表,不管是目录还是文件,都能显示 4,5除了ls可以显示,还有别的路径能快速知道自己有什么文件以及删除了那些吗?...有什么能查看文件创建和删除吗?而不需要每次都用ls查看 6.7芜湖~有趣 8:使用:cp file1 file2 ,复制file1,命名为file2的意思。...ls -a                    # 显示当前目录中的所有文件和目录,包括隐藏文件 ls -lh                   # 以人类可读的方式显示当前目录中的文件和目录大小...ls -t                    # 按照修改时间排序显示当前目录中的文件和目录 ls -R                    # 递归显示当前目录中的所有文件和子目录 ls -

    17620
    领券