gpt4 book ai didi

c++ - 函数式编程中纯函数的缺点

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:53:24 25 4
gpt4 key购买 nike

<分区>

函数式编程中的纯函数是指没有副作用的函数。其含义之一是不能改变输入参数的值。这可以被视为内存利用率的劣势吗?
例如可以说我有一个函数,它只需要一个列表并在其中添加另一个元素。在 C++ 中,它可以像

一样简单

void addElem(std::vector& vec, int a)
{
vec.insert(a);
}

这个函数显然没有使用比传递的对象已经占用的内存多的内存。
但同样在 Haskell 中也会出现这样的情况。

addElem :: [Int] -> Int -> [Int] addElem xs a = xs ++ [a]

现在在这个计算中 xs 没有改变它的值。所以我说的是否正确,在某个时候函数将消耗 xs 的双倍大小的内存,一个用于 xs,另一个用于返回值。或者以某种方式延迟调用确保实际上 xs 仅通过在末尾添加一个元素来返回?
我知道 Monad 是产生可能有副作用的方法。但是 Monad 可以用来简单地修改输入并返回它的值吗?
也可以将 xs++ [a] 更改为 a:xs 消耗更少的内存吗?

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