作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Lenses似乎没有任何缺点,同时比标准 Haskell 具有显着优势:有什么理由我不应该尽可能使用镜头吗? 是否有性能考虑?此外,模板 Haskell 是否有任何重大开销?
最佳答案
镜头形成了在数据构造函数上使用直接闭包的替代方案。因此,镜头与直接使用函数和数据构造函数具有大致相同的注意事项。
由于这个原因的一些缺点:
A { B { C { bla = "foo" } } }
Lens A String
类型的镜头,您将创建一个新的 A
, B
和 C
每次你“修改”那个镜头。这在 Haskell 中并不少见(创建大量对象),但对象创建隐藏在镜头后面,因此很难将其视为潜在的性能接收器。 data-lens-fd
示例),由于广泛的数据共享,这可以避免在大多数情况下重新创建大量对象。例如,参见 focus
函数,以及使用 withSomething
的类似模式Snap Web 框架中的函数。 data-lens
作为实现):
data-lens
,它是 Store
comonad .这意味着每次创建镜头时,都会因为创建数据结构而产生非常小的额外开销。 关于haskell - 使用镜片有什么好处和坏处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10774614/
这个问题在这里已经有了答案: #include all .cpp files into a single compilation unit? (6 个回答) 关闭8年前。 自从在一家新公司开始工作以来
这是我的代码的概要,它是一个中等复杂的 WinForms GUI。 依赖的上下文是模型 View 展示器模式。 public class StatSyncherFormView : Form, IVi
我是一名优秀的程序员,十分优秀!