什么是“全功能编程”?
-
02-07-2019 - |
解决方案
如果我理解正确的话,全功能编程就意味着:用全部函数编程。如果我正确记住我的数学课程,则总功能是在其整个域上定义的功能,部分功能是具有“孔”的功能。在其定义中。
现在,如果你有一个函数,对于某些输入值 v
进入无限递归或无限循环或者通常不以其他方式终止,那么你的函数不是为 v
定义,因而是部分的,即不是全部的。
Total Functional Programming不允许您编写这样的函数。所有功能始终返回所有可能输入的结果;并且类型检查器确保这种情况。
我的猜测是,这大大简化了错误处理:没有。
你的引言中已经提到了缺点:它不是图灵完整的。例如。操作系统本质上是一个巨大的无限循环。实际上,我们不希望操作系统终止,我们将此行为称为“崩溃”。对我们的电脑大吼大叫!
其他提示
虽然这是一个老问题,但我认为到目前为止,没有一个答案能提到全部函数式编程的真正动机,这就是:
如果程序是证明,而证明是程序,那么具有“漏洞”的程序就没有任何意义作为证据,并引入逻辑上的不一致。
基本上,如果证明是程序,则可以使用无限循环来证明任何。这真的很糟糕,并提供了我们为什么要完全编程的动机。其他答案往往不考虑论文的另一面。虽然语言 techincally 没有完整,但您可以通过使用共感应定义和函数来恢复许多有趣的程序。我们很容易想到归纳数据,但 codata 在这些语言中起着重要的作用,在这些语言中你可以完全定义一个无限的定义(当做真实的时候)如果您正在编写操作系统,那么终止的计算,您可能只会使用其中的一部分,或者可能不会。)
值得注意的是,大多数证据助理都是基于这个原则工作的,例如Coq。
慈善是另一种保证终止的语言:
http://pll.cpsc.ucalgary.ca/charity1/www/home.html
休谟是一种4级语言。外层是图灵完成,最内层保证终止:
http://www-fp.cs.st-andrews.ac。英国/休谟/报告/