- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在系统 F 中,我可以使用 Church 数字定义真正的总加法函数。
在 Haskell 中,由于底值,我无法定义该函数。例如,在haskell 中,如果x + y = x,那么我不能说y 为零-如果x 是底部,则对于任何y,x + y = x。所以加法不是真正的加法,而是它的近似。
在 C 中,我无法定义该函数,因为 C 规范要求所有内容都具有有限大小。所以在 C 中可能的近似值甚至比 Haskell 更糟糕。
所以我们有:
在 System F 中,可以定义加法,但不可能有完整的实现(因为没有无限的硬件)。
在 Haskell 中,不可能定义加法(因为底部),并且不可能有完整的实现。
在 C 中不可能定义总加法函数(因为一切的语义都是有界的)但兼容的实现是可能的。
因此,所有 3 个正式系统(Haskell、System F 和 C)似乎都有不同的设计权衡。
那么选择一个而不是另一个的后果是什么?
最佳答案
Haskell
这是一个奇怪的问题,因为您正在使用 =
的模糊概念。 _|_ = _|_
仅在域语义级别“保持”(即使如此,您也应该真正使用 ⊑
)。如果我们区分域语义级别的可用信息和语言本身的相等性,那么说 True ⊑ x + y == x
--> True ⊑ y == 0
是完全正确的。
问题不是加法,自然数也不是问题——问题只是区分语言中的相等性和语言语义中关于相等性或信息的陈述。如果没有底部问题,我们通常可以使用朴素的等式逻辑来推理 Haskell。对于底部,我们仍然可以使用等式推理——我们只需要更复杂地使用我们的等式。
优秀论文“Fast and Loose Reasoning is Morally Correct”中更全面、更清晰地阐述了总语言和通过提升它们定义的部分语言之间的关系。
C
您声称 C 要求所有内容(包括可寻址空间)都具有有限大小,因此 C 语义对可表示的自然数的大小“施加了限制”。并不真地。 C99 standard 表示如下:“任何指针类型都可以转换为整数类型。除非之前指定,否则
结果是实现定义的。如果结果不能用整数类型表示,
行为未定义。结果不必在任何整数的值范围内
类型。” 基本原理文件进一步强调“C 现在已经在广泛的体系结构上实现。虽然其中一些
体系结构具有统一的指针,这些指针是某种整数类型的大小,最大
可移植代码不能假设不同指针类型和整数类型之间有任何必要的对应关系。在某些实现中,指针甚至可以比任何整数类型都宽。”
如您所见,没有明确假设指针必须具有有限大小。
关于haskell - 无法在 C 中添加自然数的后果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8348496/
在编译iPhone应用程序时,有一个针对“优化”架构(仅限armv7)与标准armv6/armv7架构的设置。 编译纯armv7架构有什么好处/后果? 最佳答案 除非您的程序需要 OpenGLES 2
例如我有这段代码: Sub Month() Dim Conn As New Data.OracleClient.OracleConnection Conn.Open() Try
使用子域在 Wordpress 或 Blogger 上托管博客是否有任何 SEO 劣势?我不想为自己的站点创建博客模块而费心——我宁愿只设置一个 CNAME 条目并将子域指向一个免费的 Wordpre
我们使用免费 API 制作简单的 501C3 map 。通常我们的地理编码使用率很低,但我们所做的更改 [oops] 触发了所有 >2500 条记录的重新请求。 我们可以等待 24 小时“超时”。 我
我在 Heroku 上有一个 Web 应用程序,它一直使用大约 300% 的允许 RAM (512 MB)。我看到我的日志充满了错误 R14(超出内存配额)[每秒一个条目]。尽管状况不佳,我的应用程序
我在我的应用程序中以 FileChannel.MapMode.READ_WRITE 模式创建/使用内存映射文件。这些文件在应用程序的整个生命周期中创建和删除。 由于 GC 不一定释放直接缓冲区以_取消
增加最大连接数有什么害处?即使使用当前设置和复制设置,我们的主服务器也会提示已经有太多客户端。 在 postgresql.conf 中将最大连接数增加到 400 是否安全,或者我的服务器是否有问题,因
我正在处理的网站存在一些小问题,我想发布一个测试版本,在其中进行一些调整以查看效果(我想在移动设备上进行测试设备也是如此,因此拥有实时版本肯定是在多个设备上进行测试的最简单方法)。 理想情况下,我想要
我正在构建一个网站,其中导航栏的元素使用 HTML5 的 Canvas 元素进行动画处理。例如,按钮是 float 的圆圈。这个想法是按钮的文本将 float 到这些圆圈的右侧。我想知道,就 SEO
我是一名优秀的程序员,十分优秀!