如何使这个操作功能风格?

时间:2012-10-21 15:26:25

标签: functional-programming

例如,我们需要实现function Set addToSet(Stack, Object):它接受一个Stack和一些可以被推入堆栈的对象;输入对象应该被推入输入堆栈;我们需要它返回一个Set,它包含带有新对象的输入堆栈的所有元素。如果我们将新对象推入堆栈,我们就违反了functional programming的原则。出于某种原因,我们不能在调用此函数之前或之后将新对象推入堆栈(即,在函数外推送)。我们该怎么做?

我的猜测解决方案是首先将输入堆栈复制到新堆栈,然后修改新堆栈,最后将结果Set与新堆栈一起返回。你有什么看法?

1 个答案:

答案 0 :(得分:1)

怎么样:

function Stack pushToStack(Stack, Object)
function Set stackToSet(Stack)
stackToSet(pushToStack(Stack,Object))

没有副作用。