gpt4 book ai didi

haskell - 从已经存在的对象构造元组(或列表) - 成本是多少?

转载 作者:行者123 更新时间:2023-12-02 05:14:19 24 4
gpt4 key购买 nike

假设我们有一个像这样的函数:

foo (x, _, y) = (x, y)

它的作用是,它接受一个三元组并返回由原始元组的第一个和第三个元素组成的对。

现在假设我们要向该函数传递一个由一些重量级对象组成的三元组。是否会复制两个对象以创建新元组,或者元组的内部表示仅包含对对象的引用?

我认为,由于 Haskell 中的数据是不可变的,因此不需要额外的复制,但我只是想确定一下。

如果此行为是实现定义的,我想知道不同的实现在这种情况下会做什么。

最佳答案

这将是引用 - 或者甚至不是引用,而只是一个重击。 Haskell 的惰性求值意味着它基本上只会从表达式中删除 _ ,如果您需要它的值,该表达式将被扩展。它与 fst 和 snd 等基本函数没有什么不同。

关于haskell - 从已经存在的对象构造元组(或列表) - 成本是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6655902/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com