zoukankan      html  css  js  c++  java
  • 函数式编程思想

    对于函数式编程来说,其只关心,定义输入数据和输出数据相关的关系,数学表达式里面其实是在做一种映射(mapping),输入的数据和输出的数据关系是什么样的,是用函数来定义的。

    左耳朵耗子:什么是函数式编程

    http://www.yxtvg.com/toutiao/5413179/20180212a04ro500.html。

    函数式编程思想:先构造计算树,然后执行计算树。

    函数式编程的开发过程是编写计算实现、调用约定、和计算结构的过程;

    执行的过程是履行计算约定的过程。

    与面相对象做比较:

    面向对象是结构的构建,要素是对象与关系;

    函数式编程是计算的构建,要素是函数和在遵从调用约定的树上行走的信息流。

    函数式结构树的构建过程和执行过程都遵从信息流约定。

    调用的时机和顺序都有信息流约定来规范。

    函数式结构树的构建过程只是计算的绑定的过程;从执行的角度看它有另一个术语“惰性求值”:

    函数式编程语言还提供惰性求值(Lazy evaluation,也称作call-by-need),是在将表达式赋值给变量(或称作绑定)时并不计算表达式的值,而在变量第一次被使用时才进行计算。

    某些编程语言缺省延迟表达式的求值,另一些提供函数或特殊语法来延迟求值。在 Miranda 和 Haskell 中,缺省延迟函数实际参数的求值。在很多其他语言中,可以使用特殊语法明确悬置计算来延迟求值(比如 Scheme 的 "delay" 或 "force"),更一般的通过把一个表达式包装在 thunk 中。表示这种明确延迟求值的对象叫做预期或承诺。

    The benefits of lazy evaluation include:

    • The ability to define control flow (structures) as abstractions instead of primitives.

    结构树的生成与执行:

    调用约定、参量约定、信息流约定、promise;

    信息流对参量逐步赋值的 过程。

    生成的过程是将计算进行保存,而不是使用计算求值的过程。

    函数式编程需要一些基础设施进行支撑。

    根和干的部分由基础设置完成;

    枝干和叶子节点由程序员完成。

    函数式编程的运行环境都会提供最基本的运算。

    数据和事件在这个结构树上只相当于信号。

    统领全局的是输入、输出及处理流程的逻辑,是信息处理的流程。

    要关注输出在哪里;通常来说,程序员所做的部分只是整个信息处理系统的一部分。

    函数式编程与信息处理系统有很多类似的地方;

    都是输入信号,然后经过一系列的子系统的处理,最后拿到期望的结果。

    它的使用场景也有上面的类似性决定:即处理信息和信号流。

    开发的过程即为为这个信号处理系统添加子系统。

    不一样的地方在于信号处理系统是单向的;而函数式编程需要使用栈的结构来返回递归和嵌套处理过的值,也包含最终的值。

  • 相关阅读:
    Do You See Me? Ethical Considerations of the Homeless
    ELDER HOMELESSNESS WHY IS THIS AN ISSUE?
    Endoflife support is lacking for homeless people
    html内联框架
    html字体
    html块 div span
    html列表
    html表格
    SQL Server管理员专用连接的使用   作为一名DBA,经常会处理一些比较棘手的服务无响应问题,鉴于事态的严重性,多数DBA可能直接用“重启”大法,以便尽快的恢复生产环境的正常运转,但是多数情况
    如何配置最大工作线程数 (SQL Server Management Studio)
  • 原文地址:https://www.cnblogs.com/feng9exe/p/8659375.html
Copyright © 2011-2022 走看看