函数式编程

Why

How

What

  • 头等函数
  • Purely-functional Paradigms 纯函数式
    • 所有计算都当作数学函数的求值 (evaluation), 纯函数式编程主要在于确保函数遵守函数式范型,只依赖于它们的实际参数,而不用管任何全局或局部的状态
    • Vs 函数式编程
      • 有争议
      • 当一个程序使用了某些函数式编程概念的时候, 比如头等函数和高阶函数,它通常就被称为是函数式
        • 头等函数不必然是纯函数式的,由于它可以使用来自指令式范型的技术,比如数组或输入/输出方法,故而它们不是纯函数程序。事实上,最早被引证为函数式的编程语言,IPL 和 LISP[3][4],按照当前定义都是非纯函数式语言。
      • 纯函数式数据结构必然是持久性数据结构; 函数式编程可以使用非纯函数式的持久性数据结构
        • 函数式编程需要持久性;没有它,相同的计算可能会返回不同的结果
        • 函数式编程可能会使用持久的非纯函数式数据结构,而这些数据结构可能不会在纯函数式程序中使用
      • 纯粹采用函数式编程的基础部件(如 map、reduce、filter 等),进行响应式编程(异步数据流程编程)的编程范型,被称为函数式响应式编程。
    • Purely functional programming - Wikipedia
  • Function-level Paradigms 函数级
    • 隐式编程
    • 串接式编程语言
    • vs 函数式编程 ???+++
      • A key distinction from functional languages is that Backus’ language has the following hierarchy of types:
        • atoms
        • functions, which take atoms to atoms
        • Higher-order functions (which he calls “functional forms”), which take one or two functions to functions

Lang Support

  • CMS Pipelines
  • Factor (programming language)
  • FL (programming language)
  • FP (programming language)
  • J (programming language)
  • K (programming language)
  • Q (programming language from Kx Systems)

Refs