问题标签 [side-effects]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
337 浏览

monads - 纯函数式编程语言中的副作用方法

目前,我知道将副作用集成到纯函数式编程语言中的以下方法:

  • 效果系统
  • 继续
  • 独特的类型
  • 单子

单子经常被认为是最有效和最通用的方法。

还存在哪些其他方法?他们如何比较?

0 投票
1 回答
623 浏览

objective-c - 使用 NSArray 的 makeObjectsPerformSelector 产生副作用

我在 Objective-C 程序中有一个 NSArray 的 Foos。我想调用每个 Foo 的 doIt 函数,但是,根据文档, NSArray 的 makeObjectsPerformSelector 函数不允许修改原始 Foos 。doIt 选择器在调用 doIt 时更改每个 Foo 的 m 数据成员。如何在 NSArray 中的每个 Foo 上有效地执行此功能?

0 投票
2 回答
1330 浏览

java - Java:为什么这种方法有副作用?

我有一种方法会产生副作用,即使某些变量被标记final。为什么是这样?也许我对做什么感到困惑final

0 投票
2 回答
7082 浏览

c# - 使用 EmptyWorkingSet 的副作用是什么?

我正在使用下面的代码来释放一些正在运行的程序的内存,因为我自己的程序需要大量内存资源才能更快地运行。

它似乎工作正常,我能够将某些程序(如资源管理器)的内存使用量从 100,000 Kb 降低到 2,000 Kb。这很好,但是这样做有副作用吗?一些商业软件也在使用这个,比如 Yamicsoft Vista/Xp 管理器和 Firefox Optimizer 等等,所以我在想这是否没有不好的副作用或者是否存在?

0 投票
10 回答
3830 浏览

functional-programming - 在纯函数式编程中是否可能产生副作用

一段时间以来,我一直在尝试将注意力集中在函数式编程上。我查看了 lambda 演算、LISP、OCaml、F# 甚至组合逻辑,但我遇到的主要问题是 - 你如何做需要副作用的事情,例如:

  • 与用户交互,
  • 与远程服务通信,或
  • 使用随机抽样处理模拟

在不违反纯函数式编程的基本前提的情况下,即对于给定的输入,输出是确定性的?

我希望我说得通;如果不是,我欢迎任何帮助我理解的尝试。提前致谢。

0 投票
2 回答
205 浏览

design-patterns - 细粒度装饰器模式

我用最简单的术语理解装饰器模式。这个想法是一个类包装另一个类,其中装饰器方法希望在对装饰对象调用相同方法之前和/或之后运行一些其他代码。

但是,我遇到了不能简单地调用修饰方法的情况,因为它有一些不希望的副作用。但是,我确实希望运行许多装饰方法。

所以我相信我需要将装饰方法拆分为多个方法,然后在装饰器中我可以调用其中一些,运行我的装饰代码,然后调用其他一些 - 错过了我不想要的副作用。

然而,为了保持多态性,这意味着将这些方法添加到装饰对象和装饰对象实现的接口中。这是不可取的;它们不应该是公开的,这实际上意味着被装饰的类知道如何装饰它。

我相信模板模式可能更合适,其中抽象基类依次调用每个较小的方法,其中“装饰器”只是为其关心的那些提供替代实现。然而,这并不完全是“组合而不是继承”,那么你有什么建议呢?

0 投票
7 回答
5254 浏览

functional-programming - 在纯函数式编程中使用 IO 的 monad 的替代方案是什么?

monads被描述为处理IO的haskell解决方案。我想知道是否还有其他方法可以用纯函数式语言处理 IO。

0 投票
2 回答
554 浏览

python - python/numpy 中的副作用陷阱?通缉恐怖故事和死里逃生

我正在考虑从 Matlab 转移到 Python/numpy 进行数据分析和数值模拟。我已经使用 Matlab(和 SML-NJ)多年,并且在没有副作用(禁止 I/O)的功能环境中非常舒适,但对 Python 中的副作用有点不情愿。人们能否分享他们最喜欢的关于副作用的陷阱,如果可能的话,他们是如何解决这些问题的?例如,当我在 Python 中尝试以下代码时,我有点惊讶:

提前致谢

0 投票
4 回答
344 浏览

c - 为什么“a”的输出是-80?

我认为输出应该是 100,但是当我看到结果时,我发现输出为 -80。当我放括号时,#define XXX (ABC-XYZ)我得到输出为 100,但没有括号我得到输出为 -80。

0 投票
5 回答
1806 浏览

functional-programming - “发射导弹”的由来是什么?

在函数式编程的上下文中,副作用的一个典型例子是“发射导弹”。这种说法在历史上是从哪里来的?