P. Wadler 论文“The Strictness Monad”中的“⊥”是什么意思?

2024-02-10

有人可以帮我理解瓦德勒题为“的论文中的以下定义吗?”“?(摘自第 3.2 节/第 9 页,即“Strictness Monad”小节。)


有时有必要控制惰性函数程序中的求值顺序。这通常是通过可计算函数来实现的strict, 被定义为

strict f x = if x≠ ⊥ 则f x else ⊥.

在操作上,strict f x通过首先减少来减少x弱头正常形式(WHNF),然后减少应用f x。或者,减少x and f x并行,但不允许访问结果,直到x位于 WHNF。


在论文中,我们还没有看到由两条垂直线组成的符号(不确定它叫什么)的使用,所以它有点凭空出现。

鉴于瓦德勒接着说“我们将使用[严格]推导式来控制惰性程序的评估”,这似乎是一个需要理解的非常重要的概念。


您描述的符号是“底部”。它来自有序理论(特别是晶格理论)。部分有序集合的“底部”元素(如果存在)是位于所有其他元素之前的元素。在编程语言语义中,它指的是比任何其他值“定义较少”的值。通常将“底部”值分配给每个产生错误或无法终止的计算,因为试图区分这些条件会极大地削弱数学并使程序分析复杂化。

为了将事物与另一个答案联系起来,逻辑“假”值是真值网格的底部元素,而“真”是顶部元素。在经典逻辑中,这是仅有的两种,但我们也可以考虑具有无限多个真实值的逻辑,例如直觉主义和各种形式的建构主义。这些将概念带向了一个相当不同的方向。

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

P. Wadler 论文“The Strictness Monad”中的“⊥”是什么意思? 的相关文章

  • 用parsec解析递归数据

    import Data Attoparsec Text Lazy import Data Text Lazy Internal Text import Data Text Lazy pack data List a Nil Cons a L
  • 将系统命令的结果绑定到 Haskell 中的变量

    如何在 Haskell 中运行系统命令and将其结果 即标准输出 绑定到变量 在伪 Haskell 中 我正在寻找类似以下内容的内容 import System Process main do output lt callCommand e
  • Haskell Cabal 包 - 找不到 Paths_ 模块

    我正在开发一个 Haskell 项目 Happstack 服务器 Blaze HTML 前端作为主要库 我想添加一个静态数据目录 看起来你可以使用 Cabal 使用自动生成的Path
  • 如何从 haskell 中的 IOError 获取 errno?

    我在 haskell 平台上 GHC 6 12 1 作为 apt get 安装在 Debian Squeeze 上 鉴于我需要在与最初引发它的线程不同的线程上使用它 如何从 IOError 中获取底层 errno 我需要这个的原因是因为我正
  • 在 Haskell 中增长数组

    我想在 Haskell 中实现以下 命令式 算法 给定一个序列对 e0 s0 e1 s1 e2 s2 en sn 其中 e 和 s 部分不一定是自然数不同的是 在每个时间步都会随机选择该序列的一个元素 例如 ei si 并根据 ei si
  • 将数据类型设置为 Kind * -> * 这不是函子

    布伦特 约尔吉类型分类百科全书 https www haskell org haskellwiki Typeclassopedia给出以下练习 举一个类型的例子 gt 不能将其制成 的实例Functor 不使用undefined 请告诉我什
  • 无点镜头创建不进行类型检查

    在函数中test 我遍历一个列表 从它的成员生成镜头 然后打印一些数据 当我使用有针对性的呼叫风格时 这会起作用 当我使其成为无点时 它无法进行类型检查 为什么会出现这种情况 我该如何解决这个问题 在我看来 GHC 并没有保留排名较高的信息
  • Haskell 下划线与显式变量

    我已经学习 Haskell 几个星期了 我有一个关于下划线的使用的问题 作为函数参数 我认为用一个具体的例子来问我的问题会更好 假设我想定义一个函数 根据提供的索引提取列表的元素 是的 我意识到 已经是预先定义的 我可以定义该函数的两种方法
  • Haskell 中的 print 是纯函数吗?

    Is print在 Haskell 中是纯函数 为什么或者为什么不 我认为不是 因为它并不总是返回与纯函数应返回的值相同的值 类型的值IO Int并不是真正的Int 它更像是一张纸 上面写着 嘿 Haskell 运行时 请生成一个Int如此
  • Haskell:是的,没有类型类。为什么是整数?

    我有一个关于 GHCi 如何假定整数类型的问题 我正在阅读 Learn you a Haskell 是 否类型的课程 如果您想阅读全文 这里有一个链接 http learnyouahaskell com making our own typ
  • Haskell - 用防护罩替换外壳

    我想知道在这部分代码中是否可以用守卫替换 case 语句 firstFunction String gt Maybe MyType secondFunction MyType gt Integer myFunction String gt
  • 以下两个 lambda 函数的空间复杂度

    我正在阅读以下内容 https en wikibooks org wiki Haskell Graph reduction https en wikibooks org wiki Haskell Graph reduction 其内容如下
  • Haskell 入门

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 几天来 我一直试图理解 Haskell 中的函数式编程范例 我通过阅读教程和观看截屏视频
  • Haskell Stack 从 github 安装包依赖项

    是否可以使用 Haskell 堆栈从 github 安装软件包的版本 例如在一个 cabal or a stack yaml文件 如何在 git repo branch revision 上指向依赖项 对于堆栈 The 的文档stack y
  • Haskell:Data.Numbers.Primes 库在哪里?

    我尝试导入 Data Numbers Primes import Data Numbers Primes 伦哈斯克尔给了我 5 hs 1 8 Could not find module Data Numbers Primes Use v t
  • 有没有更好的方法将 UTC 时间转换为大纪元时间?

    我想将文件的修改时间设置为从 exif 数据获取的时间 为了从 exif 获取时间 我发现 Graphics Exif getTag Exif gt String gt IO Maybe String 要设置文件修改时间 我发现 Syste
  • 找不到模块“Yesod”

    我有以下代码 LANGUAGE TypeFamilies QuasiQuotes MultiParamTypeClasses TemplateHaskell OverloadedStrings module Simple where imp
  • Haskell - lambda 表达式

    我试图了解什么是有用的以及如何在 Haskell 中实际使用 lambda 表达式 我不太明白使用 lambda 表达式相对于定义函数的约定方式有何优势 例如 我通常会执行以下操作 let add x y x y 我可以简单地打电话 add
  • Haskell 输入返回元组

    我想知道 IO 函数是否可以返回元组 因为我想从这个函数中获取这些元组作为另一个函数的输入 investinput IO gt Char Int investinput do putStrLn Enter Username username
  • 如何在不声明新数据的情况下更改类型(String,Int)元组的 Ord 实例?

    我正在尝试对类型列表进行排序 String Int 默认情况下 它按字符串排序 然后按整数排序 如果字符串相等 我希望它是相反的 首先比较整数 然后如果相等则比较字符串 另外 我不想切换到 Int String 我找到了一种通过定义实例来实

随机推荐

  • 更少的变量:这可能吗

    所以我的代码在类型方面存在重大问题 但我似乎无法解决它 每当我减去1从线8有问题 我该如何解决这个问题 max columns 2 column 1 width min 30 column 2 width min 40 loop colum
  • .NET DB2 OLEDB 先决条件

    我用 C NET Framework 2 0 编写了一个 Windows 窗体应用程序 它使用System Data OleDb与 SQL Server 2000 数据库对话 该数据库运行良好 我现在需要增强应用程序以与DB2 http e
  • 使用聚合将多个函数应用于数据框中的每一列

    当我需要将多个函数按顺序应用于多个列并按多个列聚合并希望将结果绑定到我通常使用的数据框中时aggregate 通过以下方式 bogus functions foo1 lt function x mean x var x foo2 lt fu
  • npm start 如何指定index.js以外的启动文件

    我运行 create react app 然后切换到目录并运行 npm start 只是想知道如何指定一个与 index js 不同的文件在服务器上启动 这是我的 package json 文件 name todo version 0 1
  • 错误:联合中不允许复制赋值运算符

    当出现以下错误时 我正在编译下面的代码 我找不到原因 typedef union struct const int j tag X int main return 0 error member lt anonymous union gt l
  • Django 模板内部总结

    我在 django 中有以下模板 我想获取每个文档对象的最后 2 列的总计 for documento in documentos for cuenta in documento cuentasxdocumento set all tr i
  • 通过蓝牙将文件从 PC 传输到其他设备代码示例 C++ [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 Stackoverflow 用户大家好 问题 我正在寻找一些代码示例 这些示例展示了如何找到连接到我的计算机的蓝牙设备 我正在寻找一些
  • 是否有可用的 WPF“WrapGrid”控件或创建控件的简单方法?

    本质上我想要一个wrapPanel 但我希望项目能够捕捉到网格而不是被压到左侧 这样我就可以获得一个漂亮的统一外观的网格 它会自动消耗可用空间 WrapPanel 处理调整大小部分 WPF Contrib AutoGrid 处理一个很好的自
  • Android XML 属性中的星号 (*) [重复]

    这个问题在这里已经有答案了 谁能解释一下 Android XML 属性中星号的含义 允许您访问私有资源 私有资源之所以私有是有原因的 因为它们的名称将来可能会作为固件或皮肤更新的一部分而
  • 在php中对对象数组进行排序

    嗨 我想对一个对象数组进行排序 它采用数组的形式 其中包含对象 每个对象都有键 值 我想根据值对对象进行排序 问题是值包含其中有空格的数字之间 有些也是空数字 所以我无法使用 usort 对其进行排序 任何帮助将不胜感激 这是一个代码片段
  • 浏览器文本框自动完成事件,什么时候发生?

    If i dont put autocomplete off on my
  • 使用 fread 将文件内容读取到结构中

    在 Unix 环境中的高级编程 一书中 有一部分 第 8 14 章 第 251 页 作者向我们展示了 acct 结构 用于存储会计记录信息 的定义 然后 他展示了一个程序 在该程序中 他将文件中的会计数据读取到结构中 其关键部分是 frea
  • 如何更新反冲状态对象的特定值

    我有这个反冲状态对象 export const LivePolygon atom key LivePolygon default radii coordinates tilt 在另一个文件上 我像这样导入它 import LivePolyg
  • 如何在用户点击react.js中的按钮时动态添加输入字段

    我有两个问题 gt 第一个是我想在用户单击react js中的 按钮时动态添加用户输入字段 如果用户点击次数越多 表单中就会添加更多的字段 如何在react js中做到这一点 第二个当用户更改其值时 我想将每个输入字段的相应值存储到我的组件
  • 尽管 UseColumnTextForButtonText 设置为 true,但 DataGridView 按钮文本未显示

    我已向 DataGridView 添加了一个按钮列 并希望在其上显示文本 比较 我已经设置了Text比较和属性UseColumnTextForButtonValue为 True 但不显示任何文本 这在运行时也是如此 所以它不仅仅是不显示在设
  • 如何使用 proguard 混淆 war 文件

    我想使用 proguard 混淆 war 文件 我该怎么做 请解释一下步骤 这个问题我很疑惑 与其他 Java 混淆器一样 Proguard 通过重命名每个它认为可以安全重命名的变量 方法等来混淆已编译的字节码 class 文件 我想你知道
  • 如何从词云中删除单词?

    我正在使用 R 中的 wordcloud 包创建一个 wordcloud 并在 的帮助下R 中的词云 http onertipaday blogspot com 2011 07 word cloud in r html 我可以很容易地做到这
  • Delphi 中 TObject 的线程列表 - 如何填充?

    根据我对这个主题的有限了解 以下代码应该可以工作 但我没有得到预期的结果 type TClient class TObject Host String end var Clients TThreadList const Hosts Arra
  • 如何从命令行运行单个单元测试方法,同时针对特定的 Gradle 构建风格

    我正在尝试从命令行运行一个 Android 测试用例 在 IDE 中 我可以右键单击并运行 但在 CLI 中 如果出现以下错误 则会失败 gradlew test tests com xyz b module TestClass testT
  • P. Wadler 论文“The Strictness Monad”中的“⊥”是什么意思?

    有人可以帮我理解瓦德勒题为 的论文中的以下定义吗 摘自第 3 2 节 第 9 页 即 Strictness Monad 小节 有时有必要控制惰性函数程序中的求值顺序 这通常是通过可计算函数来实现的strict 被定义为 strict f x