函数式编程中的函数—函数式编程的多态

函数式编程中的函数—函数式编程的多态

保存了计算上下文和计算过程的特殊值

保存了计算上下文和计算过程的有输入输出的可计算结构。

保存了计算上下文和计算过程的可配置结构;(柯里化)。

函数作为一种特殊的值和结构,可以由更高阶的函数对其进行组合、变换、柯里化等操作;

函数作为输入和输出:本质上都是可配置、可计算结构。

可配置的是作为参量输入的计算上下文;

可计算是计算上下文配置完备后直接进行计算;

普通函数;

参数函数(闭包函数);

高阶函数;

返回函数(内部函数);

值函数:被其它函数引用和调用的函数;

上下文函数:给值函数提供上下文(参量)的函数。

函数:需要初始化的可求值结构;

函数变量:需要二阶初始化的可求值变量

1、求值结构初始化;函数绑定;

2、求值上下文初始化;参数变量绑定;

函数作为返回值的函数的解析

1、定义函数变量,引用函数返回值;

2、对函数变量进行上下文初始化,执行求值;

形参上下文:

函数内部对其它函数的引用,一部分是通过形参初始化的;

编译器会对所有的基础函数:不管是内部还是外部的进行编译存储。

函数式编程中可变的是同一签名下,不同实现的函数的可替代性。

基础函数:函数式编程中所有的不可变的函数;

组合函数:通过不可变的函数结合而成的函数。

组合函数的调用入口仍然是基础函数;

函数式编程的多态:

同一个基础函数与不同的其它函数组合,会有不同的行为形式。

原文地址:https://www.cnblogs.com/feng9exe/p/11365988.html

时间: 2024-11-29 05:25:18

函数式编程中的函数—函数式编程的多态的相关文章

Linux socket 编程中 write 函数使用的注意事项

很多人都以为使用write和使用send发送数据是一样的,确实都可以发送数据,但是有一点需要注意: write 函数不能保证发送的数据一次都能发送完 ,可能只发送了一部分(当内核发送缓冲区满的时候),这点就破坏了数据发送的"原子性",这个原子操作只的是单个包发送的过程中不会被其他发送操作影响.如果中间被打断,那么在同一个 socket 上的其他线程的发送操作就有可能在你间断后,进入发送,导致最后的包混乱.所以最好还是使用 send 来发送. 但也不是说 send 不会被打断,当发送的过

基本套接口编程中的函数(自用)

uint16_t htons(uint16_t host16bitvalue); uint32_t htonl(uint32_t host32bitvalue); //均返回:网络字节序值 uint16_t ntohs(uint16_t host16bitvalue); uint32_t ntohl(uint32_t host32bitvalue); //均返回:主机字节序值 int inet_aton(const char *string, struct in_addr*addr); //将一

网络编程中select函数的教训

先看一代码: fd_set readfs,writefs; int maxfd = -1; struct timeval tp; int nret = 0; unchar brcvbuf[2048]; tp.tv_sec = 2; tp.tv_usec = 0; FD_ZERO(&readfs); FD_ZERO(&writefs); FD_SET(g_isockid, &readfs); /* g_isockid 为要检测的socket*/ maxfd = Max(maxfd,

Java编程中常用到的编程思想

求和变量思想: 1.定义求和变量 2.将要求和的数字相加存储到求和变量中 public class SumTest{ public static void main(String[] args) { //求1-100(包含1和100)的数字总和 int sum = 0; for (int i = 1; i <= 100; i++) { sum += i ; } System.out.println("sum = " + sum); } } 计数器思想: 1.定义计数变量 2.将变

函数式编程(一) 认识“编程范式”和“函数”

编程范式(Programming paradigm) 编程范式指我们在编写程序解决问题的思路和视角.它提供了同时也决定了程序员对程序运行的看法.计算机编程中存在许多编程范式,如命令式编程.声明式编程.面向对象编程以及结构化编程等等.其中面向对象编程范式认为程序是由一系列相互作用的对象组成,而结构化编程范式认为程序采用子程序.代码区块.for循环以及while循环等结构组成.下面主要说明本篇文章将要讲到的命令式编程范式和声明式编程范式. 1)命令式编程(Imperative): 强调程序代码模拟电

GPU编程中的常用数学函数

在GPU编程中,函数一般分为以下几种类型:数学函数.几何函数.纹理映射函数.偏导数函数.调试函数等.熟练利用好GPU自带函数,可以在一定程度上提高并行编程速度与效率. 关于数学数学函数(Mathematical Functions) 数学函数用于执行数学上常用计算,比如:三角函数.幂函数.向量和矩阵函数,这些函数一般都被重载,用来支持标量数据和不同长度的向量作为输入参数.列表如下: 标准函数库中的数学函数 未完待续......

GPU编程中的常用几何函数、纹理映射函数、偏导数函数

在GPU编程中,函数一般分为以下几种类型:数学函数.几何函数.纹理映射函数.偏导数函数.调试函数等.熟练利用好GPU自带函数,可以在一定程度上提高并行编程速度与效率. 在上一部分已经介绍了数学函数, 数学函数用于执行数学上常用计算,比如:三角函数.幂函数.向量和矩阵函数,这些函数一般都被重载,用来支持标量数据和不同长度的向量作为输入参数.本部分介绍几何函数.纹理映射函数.偏导数函数.调试函数. 几何函数(Geometric Functions) 几何函数,如表所示,用于执行和解析几何相关的计算,

Scala中的函数表达式

最近看Spark的东西,由于之前没有接触过lambda函数表达式,所以搜了点资料,特地纪录在此 Scala中的Lambda表达式 在函数式编程中,函数是基本的构造块.Scala融合了java中的面向对象编程和函数式编程.在Scala中,一个lambda表达式是种叫做“函数”或者“函数文本”.Scala中的函数属于一等公民.它们可以被分配给vals或者vars(最终变量或者非最终变量),它们可以作为其他函数的参数,也可以组合成新的函数. 在Scala中一个函数文本写成如下形式: ? 1 (argu

C#函数式编程中的标准高阶函数详解

何为高阶函数 大家可能对这个名词并不熟悉,但是这个名词所表达的事物却是我们经常使用到的.只要我们的函数的参数能够接收函数,或者函数能够返回函数,当然动态生成的也包括在内.那么我们就将这类函数叫做高阶函数.但是今天我们的标题并不是高阶函数,而是标准高阶函数,既然加上了这个标准,就意味着在函数式编程中有一套标准的函数,便于我们每次调用.而今天我们将会介绍三个标准函数,分别为Map.Filter.Fold. Map 这个函数的作用就是将列表中的每项从A类型转换到B类型,并形成一个新的类型.下面我们可以