我注意到“道德”这个词不断出现在函数式编程语境中。几个例子:
Purescript Aff
文档:
这在道德上等同于
ErrorT (ContT Unit (Eff e)) a
。
我不熟悉这个词的这些用法。我几乎可以推断出他们想说的是什么,但我们能否更准确地澄清它的含义?
(在English Language & Usage上交叉发布)
答案 0 :(得分:7)
术语"道德对等"在(形式化的)逻辑中,并且通过扩展,在编程中与诉诸道德无关(如在道德或哲学问题中)。它正在选择“道德和”这个词,但意味着不同的东西。它通常被认为意味着P持有,但仅限于某些边条件"。如果这些条件没有教育价值,微不足道,技术性和/或无聊,则通常会被忽略。因此,关于"道德对等的链接文章"无所事事 - 这里没有任何价值判断。
我对Purescript了解不多,但是我解释你提到的陈述的方式是"你可以用Aff
作为ErrorT (ContT Unit (Eff e)) a
来实现同样的目的。 "
再举一个例子:假设您有两个功能,而您只对其域的特定(可能很大)子集感兴趣。我们还要说这两个函数在这些域上是一致的,即对于所有x∈dom,f(x)= g(x)。但是为了这个例子,也许他们在0上做了一些不同的事情,但是你不会将0传递给他们(因为0违反了一些假设)。人们可以合理地说f和g"在道德上是等同的"。
特别是在逻辑界,还有其他用途的道德"例如在短语"证明在道德上有问题",这意味着作者认为证明是草率的,它可能有空隙,但在技术上可以修复。在特定情况下,即执行关于可能不终止程序的证据,您提到的论文给出了这样的理由,这在标题中得到了回应,“快速和宽松的推理在道德上是正确的。”#34;
答案 1 :(得分:2)
正如Conor McBride在Twitter上指出的那样,这种用法源于类别理论界,它在fp中激发了很多。
Eugenia Cheng有一篇很好的论文描述了数学中使用的道德概念。