"); //-->
SAGEMCOM 252721117AC 可以用高阶函数抽象出来
常见的递归模式可以用高阶函数抽象出来,比如变形和变形(或“折叠”和“展开”)是最明显的例子。这种递归方案起到类似于内置控制结构的作用环在命令式语言。
大多数通用函数式编程语言都允许无限制递归,并且图灵完成,这使得停机问题 不可判定的,会导致不健全的等式推理,并且通常需要引入不一致语言所表达的逻辑类型系统。一些特殊用途的语言,如Coq仅允许有根据的递归和是强正规化(非终止计算只能用称为的无限值流来表示codata).结果是,这些语言不是图灵完全的,用它们来表达某些函数是不可能的,但是它们仍然可以表达一大类有趣的计算,同时避免了无限制递归带来的问题。仅限于带有一些其他约束的良好递归的函数式编程被称为全功能程序设计。[63]
严格评估与非严格评估[编辑]函数式语言可以根据它们是否使用严格(热切)或者不严格(懒惰)求值,是指在对表达式求值时如何处理函数参数的概念。技术上的区别在于标志语义指包含失败的或发散的计算的表达式。在严格评估下,任何包含失败子术语的术语的评估都将失败。例如,表达式:
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。