- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有人可以通过示例演示惰性求值与响应式(Reactive)编程有何不同。或者,它们是否非常相似?
鉴于 c = 3;
这两种方法似乎都涉及实现 b = c + 2;
至少在内部,无论代码看起来如何 int b () {返回 c + 2;}
。在这两种情况下,直到需要它的值才知道 b
是什么,然后进行计算。
描述这种方法的名称是什么?
那么响应式(Reactive)编程使用或模拟惰性求值?具有惰性求值的语言是以 react 方式编程的吗?
最佳答案
您似乎将惰性求值和响应式(Reactive)编程混淆为处于同一“逻辑级别”。
对我来说,惰性求值是一种允许无限数据存在和操作的语言工具。 (具有某种“有限结构”的数据,但在某种意义上是无限的,因为您可以随心所欲地完成并且仍然有一些剩余。)如果您稍微挠一下头并尝试一些示例,您会看到在存在无限数据结构的情况下进行惰性求值是很好的,因为在使用这些值时不会“永远循环”。 (虽然惰性评估还有其他用途,但有时肯定会有一些性能提升。)
维基百科定义响应式(Reactive)编程:
In computing, reactive programming is a programming paradigm oriented around data flows and the propagation of change. This means that it should be possible to express static or dynamic data flows with ease in the programming languages used, and that the underlying execution model will automatically propagate changes through the data flow.
对我来说,这根本不适合懒惰的评估。懒惰的评估只是意味着你只计算你需要做更多工作的答案,然后保留一个持有者(通常称为“thunk”),让你在需要时做更多的工作,这样你就可以计算更多答案。 (顺便说一句,这种“尽可能多地”实现的能力正是让您可以使用惰性求值来处理无限数据的原因。)
相比之下,响应式(Reactive)编程允许您定义 --- 简洁 --- 数据流将如何传播。 (例如,响应式框架可以让您设置您提供的示例而无需显式地使用回调和函数指针来实现它。)但实际上,这条线非常模糊。命令式语言中肯定有响应式框架:大多数人会称 GUI 框架为响应式。
相比之下,在 functional reactive programming(FRP) ,您以声明方式指定 react 数据。这是使用 Haskell 语言的惰性“在幕后”实现的(在这种特殊情况下),因为这是最适合进行更新的方法(因为它最直接符合该范式)。
但是在像 C 或 C++ 这样的语言中,您通常通过函数指针或回调进行响应式(Reactive)编程,而没有明确的惰性求值概念。当然,在支持这种东西时可能会有一些惰性,但你并没有真正处于正确的语义级别来做出这种区分,在这种情况下,你通常可以使用惰性“技巧”来加速响应式(Reactive)框架(表面上会更新一些东西 --- 比如说 GUI --- 随着用户使用它的更多部分而按需更新)。
关于language-agnostic - "lazy evaluation"和 "reactive programming",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13575498/
我一直在阅读Code Complete 2 .由于我不是以英语为母语的人,因此我需要一些时间才能理解某些陈述。我希望你描述作者在他的书中所做的这两个陈述之间的区别: You should progra
我将 TYPO3 安装从 8.6 升级到 9.5。在内容语言设置为“所有语言”的页面上,这些元素不会显示在前端。 似乎在 ContentObjectRenderer->getQueryConstrai
我和一个学生正在建立一个新的口译员家庭,我们希望以现有口译员为基准。我们很乐意下载包含 Computer Language Benchmarks Game 中使用的所有源代码的 tarball 或 z
因此,我正在尝试创建一个双语网站,只需单击一下即可将其从英语切换为葡萄牙语,反之亦然。 我收到此错误:Use of undefined constant language - assumed 'lan
我正在阅读一个比较不同编程语言的演示文稿。衡量的特征之一是“语言表现”。什么意思? 最佳答案 真正的答案:它没有任何意义,或者该演示文稿的作者当时在想什么。 也许它的意思是“执行相对于其他语言具有相同
Go talk 2009 pdf 有评论解释了他们为什么想出 go 语言: No new major systems language in a decade. 系统语言是什么意思? 它是一种应该通过
我现在正在使用 Squeak4.1 学习 SmallTalk。我使用 Squeak by Example 作为教程,在这里我反驳了一个 delema,“Morphic 是由...开发的,用于自编程语言
谁能告诉我如何编译和运行在 ZOMBIE 上编写的程序?例如,如果我编写了以下源代码线以将“hello world”打印到屏幕上,我该如何制作一个 .exe 文件。谢谢! HelloWorld is
我在看帖子Why Language is Important (Why I prefer C#)来自“Dot Net Thoughts”,文章的第一段以以下声明结尾: ...every languag
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 7年前关闭。 Improve t
我正在尝试使用 qTranslate X 制作一个基本的语言切换器,例如: FR | EN 有一个函数可以实现这一点:qtranxf_generateLanguageSelectCode('text'
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 9 年前。 Improv
我正在研究浏览器指纹。在应用程序的 webview 中运行的 js 将通过获取 navigator.language.substr(0,2) == navigator.languages[0].sub
已关闭。这个问题是 not reproducible or was caused by typos 。目前不接受答案。 这个问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-top
"Page description language"、"markup language"、"Page description markup language"有什么区别和关系? 根据他们的 wiki
我正在为 IntelliJ 创建一个自定义语言插件。 我希望新语言的文件可以包含其他语言的文本片段。 我想支持的特定语言是 HTML、JS、CSS 和 SQL。 我还想支持其他自定义语言(即我要为其定
我正在用 mysql 创建一个图书数据库。一本书可以有不同的语言。并且将会有数千本书。 (而且我远不是这个领域的专家,之前只创建过小型和简单的数据库) 1) 只创建一个包含语言列的表并为其创建索引是否
我的网站使用用户可切换的三种不同语言。语言切换由 JavaScript (AngularJS) 在客户端完成。 我在我的网站上使用 reCAPTCHA 2,当用户切换网站语言时需要更改 reCAPTC
我在 Core Image Kernel Language 中有以下函数,我需要在 Metal Shading Language 中等效的东西,但是我对 destCoord 、 unpremultip
“不存在‘编译语言’或‘解释语言’之类的东西。语言实现者选择编写编译器、解释器还是两者之间的任何东西都是实现细节,与语言无关。” 上述说法是否属实? 最佳答案 是的,在最严格的解释中它是正确的。您可以
我是一名优秀的程序员,十分优秀!