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”中的“⊥”是什么意思? 的相关文章

  • Haskell 中的参数数量和无点 [重复]

    这个问题在这里已经有答案了 对于多重模式匹配 不同数量的参数是不可能的 即使是无点的 foo True b b 2 foo id 例如 不起作用 但 foo True 2 foo id 做 有时我们只能在函数的一部分使用 point fre
  • 如何使用 alex/haskell 执行 python 风格的缩进/缩进标记?

    我正在用 Haskell 为 Alex 中的一种小语言编写一个词法分析器 该语言被指定为具有 python 式的显着缩进 只要缩进级别发生变化 就会发出 INDENT 标记或 DEDENT 标记 在像 C 这样的传统命令式语言中 您将在词法
  • 测试列表是否已排序

    在 haskell 中找到最小列表确实很容易 foldl1 min 9 5 7 3 7 4 6 10 给我3 我更换了min with lt 测试列表是否已排序 foldl1 lt 9 5 7 3 7 4 6 10 我收到此错误消息 No
  • 镜头中的观看和使用有什么区别?

    有什么区别 view MonadReader s m gt Getting a s a gt m a and use MonadState s m gt Getting a s a gt m a in 控制镜头吸气剂 https hacka
  • Control.Arrow 与 Data.Tuple.Extra

    我经常使用以下功能Data Tuple Extra图书馆 first second and both 有等效的 函数Control Arrow 其实我更喜欢Data Tuple Extra因为我完全迷失了文档Control Arrow 使用
  • 在 Haskell 中等待然后检测按键的简单方法是什么?

    我对 Haskell 还很陌生 所以我正在寻找一种简单的方法来检测按键 而不是使用getLine 如果有人知道任何库 或者知道一些这样做的技巧 那就太好了 如果有更好的地方可以问这个问题 请直接告诉我 我将不胜感激 如果您不想阻止 可以使用
  • 为什么这会导致 Haskell Conduit 库内存泄漏?

    我有一个conduit https hackage haskell org package conduit管道处理长文件 我想每 1000 条记录为用户打印一份进度报告 所以我这样写 Every n records perform the
  • 无法通过 cabal 安装“System.Random”

    我尝试通过 Cabal 通过 Powershell 和 Git Bash 安装 System Random 得到这个结果 PS C Users xxx gt cabal install random Resolving dependenci
  • 如何在 blaze-html 中渲染 blaze-svg 标记

    我想将使用 blaze svg 生成的 svg 图直接包含在使用 blaze html 生成的 html 中 两者都基于 blaze markup 所以我希望它很容易 diagram1 Svg diagram1 try1 Html try1
  • Haskell,范围缩小到无步骤[重复]

    这个问题在这里已经有答案了 为什么在 Haskell 中工作范围不能降低到没有步骤 7 1 gt 但只工作这个 7 6 1 gt 7 6 5 4 3 2 1 Haskell 无法知道您想要执行 1 除非您给出提示 在某些情况下 您可能需要一
  • 表达式“ap zip tail”如何工作

    我想知道怎么写f x zip x tail x 点免费 所以我使用了pointfree程序 结果是f ap zip tail ap作为 Control Monad 的函数 我不明白点自由定义是如何工作的 如果我能从类型的角度去理解的话 希望
  • 如何向 Scotty 中间件添加基本身份验证?

    我目前正在制作 Scotty API 但找不到任何 basicAuth 实现的示例 Wai Middleware HttpAuth 具体来说 我想将基本身份验证标头 用户 通行证 添加到我的某些端点 即以 admin 开头的端点 我已经设置
  • 列表理解:制作列表列表

    你好 我正在尝试在 haskell 中创建一个函数 该函数接受一个数字 a 使用列表 即数字 将其一部分4它会创造 1 1 1 1 1 1 2 1 3 2 2 4 我正在考虑使用列表理解来创建列表 x 然后使用 1 n 中的数字创建更多列表
  • 我应该使用镜头中的什么来按索引构建只读吸气剂?

    我有一个内部细节被隐藏的类型 我想提供某种镜头 可以在特定索引处读取所述类型的元素 但是not修改它们 一个Ixed我的类型的实例似乎没有做我想要的事情 因为它明确允许修改 尽管不允许插入或删除 如果我想允许只读索引 我不确定我使用什么 如
  • Haskell 测量函数性能

    在 Haskell 中 我如何 简单地 测量函数的性能 例如 运行需要多长时间 或者需要多少内存 我知道分析 但是 是否有一种更简单的方法不需要我对代码进行太多更改 测量运行需要多长时间以及需要多少内存是两个独立的问题 即 基准测试和分析
  • 对元组列表进行排序的函数 - Haskell

    抱歉 这个简单的问题只是我对 haskell 非常陌生 我正在尝试编写一个函数 order 它将对另一个函数 Frequency 生成的元组列表进行排序 频率计算列表中不同元素的数量 a给出一个这样的结果 比如 gt 频率 aabbbccc
  • 我应该使用什么递归方案来重复有效的操作,直到其结果符合某些标准?

    也就是说 我要问的是一个循环 effectful Int gt IO Int effectful n do putStrLn Effect show n return n condition 3 final Int gt IO final
  • 有什么方法可以在 do / while / let 块中打印出变量的类型吗?

    有没有办法打印出嵌套变量的推断类型ghci 考虑代码 let f g where g x Int x 那么 最好查询一下类型g e g t f g会打印出Int gt Int 您可以通过给出适当的错误类型注释并检查错误消息来诱骗此信息 Ma
  • 如何处理在组合下发生变化的类型?

    我最近读了一篇非常有趣的论文单调性类型 https infoscience epfl ch record 231867 files monotonicity types pdf其中描述了一种新的 HM 语言 该语言可以跟踪操作之间的单调性
  • 为什么解析器组合器“seq”用“bind”和“return”定义?

    我正在读这个article http eprints nottingham ac uk 237 1 monparsing pdf关于解析器组合器并且不理解以下内容 他们说使用seq 见下文 导致解析器将嵌套元组作为结果 操作起来很混乱 se

随机推荐

  • 更少的变量:这可能吗

    所以我的代码在类型方面存在重大问题 但我似乎无法解决它 每当我减去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