参考透明度

2024-01-08

当术语“不可观察”与函数式编程中的术语“引用透明”一起使用时,其含义是什么?


您可能知道,术语“引用透明”意味着表达式的值只能依赖于values它的各个部分,而不是关于它们的任何其他事实。

例如,它不能依赖于以下内容:

  • 表达式的某些部分是否已经被求值(用惰性语言)
  • 两个相等的值是否共享(指向内存中同一位置的指针)
  • 数据结构是否是循环的(即它的指针创建一个循环)

关于程序当前状态的所有这些事实要么是真要么是假,但是没有任何表达式可以根据它们改变其值。所以那些东西被称为不可观察的.

这部网络漫画 http://ro-che.info/ccc/09.html and Reddit 上的讨论 http://www.reddit.com/r/haskell/comments/c4hnr/zhuangzi_butterfly_and_referential_transparency/c0q356m也许也会启发你。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

参考透明度 的相关文章

  • 使方法真正内联

    我伪造了一个简单的例子来检查 inline注释行为 import scala annotation tailrec object InlineTest extends App inline private def corec x Int I
  • Common Lisp 中的重复元素 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我尝试创建一个函数two argum
  • 当我在 scala 中使用全局映射变量而不广播时会发生什么

    在 scala 中 当我在 scala 中使用全局映射变量而不进行广播时会发生什么 例如 如果我使用变量collect 例如collectAsMap 看来它是一个全局变量 我可以在所有地方使用它RDD mapValues 函数无需显式广播它
  • 了解函数类型

    我在尝试理解 Haskell 如何确定函数类型时感到有点困惑 这是一个例子 boolFcn x y x 3 y 4 当我检查上述函数的类型时 它给出了结果 Num a1 Num a Eq a1 Eq a gt a gt a1 gt Bool
  • 生成 k 个成对独立的哈希函数

    我正在尝试实施一个计数最小草图 http en wikipedia org wiki Count Min sketchScala中的算法 所以我需要生成k个成对独立的哈希函数 这是一个比我以前编写过的任何东西都低的级别 除了算法类之外 我对
  • 作为单例集合的选项 - 现实生活中的用例

    标题几乎概括了这一点 Option作为单例集合有时会令人困惑 但有时它允许一个有趣的应用程序 我脑子里有一个例子 并且想了解更多这样的例子 我唯一的例子是运行for对的理解Option List T 我们可以执行以下操作 val v Som
  • 如何将Spark DataFrame插入Hive内表?

    以追加模式将 DF 插入 Hive 内部表的正确方法是什么 看来我们可以使用 saveAsTable 方法直接将 DF 写入 Hive 或将 DF 存储到临时表然后使用查询 df write mode append saveAsTable
  • 错误:使用替代方法写入重载方法值:

    我正在尝试读取固定宽度的文件并将其写入文本文件 下面是代码 输入文件布局字段的长度 4 10 3 5 3 1 1 5 7 094482018 07 10 022 14012 000 0 30000A 002290 059412018 07
  • 如何简洁地写一个 || b 其中 a 和 b 是可选值?

    我对任何语言的答案都很满意 但我最终想要 Java 的答案 Java 8 没问题 不限于 Java 8 我尝试修复标签 如果我有两个Optional
  • 为什么“this”解析在 JavaScript 中如此特殊?

    警告 首先是有问题的 JavaScript 代码 1 buggy counter problem this can be broken var Counter1 function this count 0 this increment fu
  • 使用值类参数的 Mockito 存根方法失败并出现 NullPointerException

    使用类型化值类作为 ID 是 Scala 中的常见模式 然而 在存根以值类作为参数的方法时 Mockito 似乎遇到了问题 在下面的示例中 第一个具有实际值的存根工作得很好 但第二个使用参数匹配器的存根会抛出 NullPointerExce
  • Scala Spark:将数据框中的双列转换为日期时间列

    我正在尝试编写代码来将日期时间列 date 和 last updated date 转换为 mm dd yyyy 格式以进行显示 它们实际上是 unix 时间转换为双精度数 我该怎么做呢 import org joda time impor
  • Scala Eclipse 自动完成功能损坏?

    我正在尝试让自动完成功能在 Eclipse 中用于 Scala 开发 我试图从 Scala 类引用 java 类 但自动完成功能从未找到它 例如 以这个 scala 类为例 object Main def main args Array S
  • 特征/类类型参数优先于方法类型参数的规则是什么

    我已经使用 scala 一段时间了 我认为我真的开始理解一切 好吧 大多数事情 但我发现自己对 Map 类中的许多方法定义感到困惑 我知道 FoldLeft 等如何工作 但我感到困惑的是 Map 函数中使用的类型参数 我们以 FoldLef
  • JavaFX 控制器如何访问其他服务?

    我将 JavaFX 2 与 Scala 一起使用 我有class Application extends javafx application Application它执行诸如读取应用程序配置等操作 然后它会启动主窗口 该主窗口需要连接到一
  • 在 Akka Actor 中使用 Future

    我刚刚开始学习 Scala 中的 Akka Actors 我的理解是 Actor 收到的消息会在 Actor 的邮箱中排队 并一次处理一个 通过一次处理一条消息 可以缓解并发问题 竞争条件 死锁 但是 如果 Actor 创建一个 futur
  • 首次使用 SBT - 检索代理背后的依赖项时出现问题

    我已经下载了 SBT sbt 0 13 15 zip 并将其解压缩 但在运行 sbt bat 时遇到问题 最初 我遇到了代理问题 当我发现需要指定时修复了这些问题onlyhttpsconfig 而不是 http 的 当提供两者时 它使用的是
  • 仅当要转换的函数至少有两个参数时,函数到二阶函数的隐式转换才有效

    我有隐式转换和高阶函数的问题 似乎只有当要转换的函数至少有两个参数时 函数到二阶函数的隐式转换才有效 Works implicit def conv foo Integer gt String String gt String null 不
  • 使用新的反射API,如何找到类的主构造函数?

    您可以像这样获取类的所有构造函数 import scala reflect runtime universe val ctor typeOf SomeClass declaration nme CONSTRUCTOR asTerm alte
  • java.lang.RuntimeException:不支持的文字类型类org.joda.time.DateTime

    我在一个使用库的项目中工作 这对我来说非常新 尽管我在其他项目中使用它 没有任何问题 org joda time DateTime 所以我和Scala 并将项目作为作业运行数据块 scala版本 2 11 12 根据我到目前为止的调查 异常

随机推荐

  • 承诺:转到下一个错误函数[重复]

    这个问题在这里已经有答案了 如何使用 Promise 链调用下一个错误函数 我认为错误函数内的返回会自动调用下一个错误函数 Called in a controller dataService saveRequest then functi
  • 如何在VSCODE中设置tasks.json文件来编译Fortran程序?

    我想设置 VScode 操作系统 Windows 10 来创建并编译用 Fortran 90 95 编写的程序 我可以通过在终端中输入以下内容来完成此操作 gfortran o Example exe Example f90进而 Examp
  • 捕获 python 程序的标准输出

    我正在尝试编写一个 C 程序来捕获 python 程序中的标准输出 我的问题是所有输出都是在程序执行之后而不是实际发生时出现的 举个例子 对于这个 python 程序 print Hello time sleep 2 print Hello
  • 在 net core 控制台应用程序中使用 Web 服务器进行简单路由

    我在使用 kestrel 进行路由时遇到问题 我找不到任何关于如何在 netcore 控制台应用程序内部实现此功能的好的教程 我想构建一个简单的 Web 服务器 它有 2 3 个可以访问的端点 public class WebServer
  • 由于非 Ascii 字符,顶点着色器无法编译?

    因此 我开始使用 OpenGL 与 glew 和 GLFW 来创建游戏引擎 在开始使用着色器时我几乎立即遇到了问题 它们没有被使用或者即使被使用也没有任何效果 我一直在用大量其他示例检查我的代码 它们都匹配 没有任何看起来不合适的地方 我开
  • 访问控制允许来源语法

    我希望允许所有的跨源资源共享from example com 的子域 因此 我将如下所示的跨源资源共享标头添加到了页面中subdomain1 to example com
  • 如何将全部破坏限制为仅长单词?

    我正在尝试全部打破很长的单词 还有一些很长的uuid col在基于引导程序的模板中 但是当我对所有列使用以下样式时 它会破坏所有内容 在示例中检查不良破坏 即使单词正常换行的地方工作得很好 在示例中检查预期破坏 有没有办法我可以尽可能使用正
  • Webpack 无法加载字体(ttf)

    目前我有 3 种字体想要添加到我的 React 项目中 一个 一个光 一个大胆 我的文件结构 src fonts A ttf A light ttf A bold ttf styles base base scss styles scss
  • 限制对 C++ 中特定类的方法访问

    我有两个密切相关的类 我将其称为 Widget 和 Sprocket Sprocket 有一组方法 我希望可以从 Widget 调用它们 但不能从任何其他类调用它们 我也不想仅仅将 Widget 声明为 Spocket 的友元 因为这将使
  • 如何访问 OpenCV Matcher 上的点位置?

    我正在使用这个 FLANN 匹配器算法来匹配 2 张图片中的兴趣点 代码如下所示 有时代码会找到匹配点的列表 std vector
  • 向 Python 添加宏

    我想调用以下代码in situ无论我提到什么MY MACRO在我下面的代码中 MY MACRO frameinfo getframeinfo currentframe msg We are on file frameinfo filenam
  • 归并排序,递归部分

    研究了几天合并排序后 我从概念上理解了它 但有一点我不明白 我得到什么 1 它需要一个列表 例如一个数字数组 将其分成两半并对两半进行排序 最后将它们合并在一起 2 因为它是一种递归算法 所以它使用递归来做到这一点 因此 上述数组的分割如下
  • 自动代码签名 - 保护私钥

    我想要自动执行一些 ClickOnce 部署工件 应用程序 exe 和清单 的代码签名 我在用signtool http msdn microsoft com en us library windows desktop aa387764 2
  • Java 中前导零如何改变数字文字?

    我和我的朋友在看到它和答案后对Java中的这个说法感到困惑 这是如何运作的 System out printf d 077 等于63 077 is an octal number http en wikipedia org wiki Oct
  • 无法在舞台内跳过舞台

    我有一个阶段在一个阶段内 我想根据条件跳过它when pipeline agent any stages stage Dynamic stages steps script serverAStatus false def tests CLI
  • 如何判断一个对象的类?

    如果上课B和班级C扩展类A我有一个类型的对象B or C 我如何确定它是哪种类型的实例 if obj instanceof C your code
  • 我们是否可以在可能的情况下使用返回值优化,而在没有的情况下使用移动语义,而不是复制语义?

    是否可以编写 C 代码 在可能的情况下依赖返回值优化 RVO 而在不依赖返回值优化的情况下依赖移动语义 例如 以下代码由于条件原因无法使用 RVO 因此它将结果复制回来 include
  • 路由器链接不适用于共享模块内的组件

    我编写了一个名为 Customer 的模块 其中包含登录 主页和注册等多个组件 现在我创建了一个共享模块 它也有 2 个组件 例如页眉和页脚 由于页眉和页脚将由客户模块中的所有组件共享 因此我将它们放置在共享模块中 将共享模块导入到客户模块
  • Woocommerce Checkout 无法使用 WooCommerce 插件的无验证码 reCAPTCHA

    当我激活 No CAPTCHA reCAPTCHA for WooCommerce 插件时 因此在 WooCommerce 的结帐页面上 当客户检查 创建帐户 时复选框和下订单相比 它不起作用 页面只是滚动到顶部 没有任何操作 任何想法 问
  • 参考透明度

    当术语 不可观察 与函数式编程中的术语 引用透明 一起使用时 其含义是什么 您可能知道 术语 引用透明 意味着表达式的值只能依赖于values它的各个部分 而不是关于它们的任何其他事实 例如 它不能依赖于以下内容 表达式的某些部分是否已经被