随笔分类 -  函数式编程

摘要:函数编程中functor和monad的形象解释 函数编程中Functor函子与Monad是比较难理解的概念,本文使用了形象的图片方式解释了这两个概念,容易理解与学习,分别使用Haskell和Swift两种语言为案例。 虽然Swift并不是一个函数式语言,但是我们可以用更多点代码来完成与Haskell 阅读全文
posted @ 2018-06-05 23:14 zzfx 阅读(299) 评论(0) 推荐(0) 编辑
摘要:lambda表达式是函数式编程中的匿名函数语法规范。 In computer programming, an anonymous function (function literal, lambda abstraction, or lambda expression) is a function d 阅读全文
posted @ 2018-06-05 18:50 zzfx 阅读(135) 评论(0) 推荐(0) 编辑
摘要:函数式编程由回掉函数指针衍生; 响应式编程基础是关联操作的封装; 链式编程每一次操作的结果返回一个结构体。 阅读全文
posted @ 2018-05-17 10:47 zzfx 阅读(738) 评论(0) 推荐(0) 编辑
摘要:函数式编程的本质在于计算的构建; 计算的构建依赖于函数是一等公民; 函数是一等公民所以函数支持,传输、返回、存储和计算; 而像变量一样的存储功能,使得计算的构建成为可能。 阅读全文
posted @ 2018-04-26 10:45 zzfx 阅读(109) 评论(0) 推荐(0) 编辑
摘要:命令式编程的计算在编译时构建完成; 声明式编程的计算在运行时构建完成; 这里所谓的构建为关键节点的组合。 例如函数式编程,最底层或最基本的运算单元还是命令式编程。 阅读全文
posted @ 2018-04-11 13:02 zzfx 阅读(818) 评论(0) 推荐(0) 编辑
摘要:函数式编程分为两部分: 1、运算的构建; 2、运算的执行。 阅读全文
posted @ 2018-04-09 12:52 zzfx 阅读(100) 评论(0) 推荐(0) 编辑
摘要:命令式编程强调的是时序; 声明式编程强调的是逻辑; 函数式编程强调的是逻辑。 阅读全文
posted @ 2018-03-29 10:47 zzfx 阅读(340) 评论(0) 推荐(0) 编辑
摘要:响应式编程关注起因与结果间的联系方式 响应:对事物的变化做出反应。 阅读全文
posted @ 2018-03-28 23:10 zzfx 阅读(126) 评论(0) 推荐(0) 编辑
摘要:链式编程是函数式编程计算构建的一部分。 是计算构建器的实现。 阅读全文
posted @ 2018-03-28 17:59 zzfx 阅读(121) 评论(0) 推荐(0) 编辑
摘要:面向对象: 一切皆对象;通过对象的构建和组合来模拟系统,最终通过这个系统来解决问题。 消息和信息在这个系统中流转。 语言的底层支持就是通过对象来构建以对象为单元的联系的系统。 函数式编程: 一切皆计算;这个系统就是通过计算单元的组合构建成更大的计算单元,从而完成对信息和信号的处理。 本质上就是构建一 阅读全文
posted @ 2018-03-28 10:54 zzfx 阅读(388) 评论(0) 推荐(0) 编辑
摘要:惰性求值的本质是计算保存、计算构建和计算触发机制实现。 MASConstraint的实现是其典型案例。(本结论为错)。 [self.userIcon mas_makeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(15) 阅读全文
posted @ 2018-03-27 19:34 zzfx 阅读(792) 评论(0) 推荐(0) 编辑
摘要:命令式关注实现细节; 声明式关注组成逻辑。 命令式编程强调执行上的顺序; 声明式编程强调逻辑上的行为和顺序。 阅读全文
posted @ 2018-03-27 19:18 zzfx 阅读(130) 评论(0) 推荐(0) 编辑
摘要:定义映射(计算),执行映射(计算) 对于函数式编程来说,其只关心,定义输入数据和输出数据相关的关系,数学表达式里面其实是在做一种映射(mapping),输入的数据和输出的数据关系是什么样的,是用函数来定义的。 函数式编程思想:先构造计算树,然后执行计算树。 函数式编程的开发过程是编写计算实现、调用约 阅读全文
posted @ 2018-03-27 18:59 zzfx 阅读(245) 评论(0) 推荐(0) 编辑
摘要:flattenMap使用步骤: 1.传入一个block,block类型是返回值RACStream,参数value 2.参数value就是源信号的内容,拿到源信号的内容做处理 3.包装成RACReturnSignal信号,返回出去。 flattenMap底层实现: 0.flattenMap内部调用bi 阅读全文
posted @ 2018-03-27 16:04 zzfx 阅读(1011) 评论(0) 推荐(0) 编辑
摘要:A monad is created by defining a type constructor M and two operations, bind and return (where return is often also called unit): The unary return ope 阅读全文
posted @ 2018-03-27 12:53 zzfx 阅读(154) 评论(0) 推荐(0) 编辑
摘要:Functor的代码表示 接下来我们用Scala实现Monad的定义: 还有一种更为常见的定义方式,在Scala中Monad也是以这种方式出现: 要满足这两点,我们需要一个类型构造器 我们现在可以把这个定义再简化一些,类型的映射方法可以不用,并把它作为一个type class: 阅读全文
posted @ 2018-03-27 11:08 zzfx 阅读(175) 评论(0) 推荐(0) 编辑
摘要:仿函数(functor),就是使一个类的使用看上去像一个函数。其实现就是类中实现一个operator(),这个类就有了类似函数的行为,就是一个仿函数类了。 In computer programming, a function object[a] is a construct allowing an 阅读全文
posted @ 2018-03-27 10:54 zzfx 阅读(218) 评论(0) 推荐(0) 编辑
摘要:面向签名编程 阅读全文
posted @ 2018-03-26 22:50 zzfx 阅读(148) 评论(0) 推荐(0) 编辑
摘要:函数编程支持函数作为第一类对象,有时称为闭包或者仿函数(functor)对象。实质上,闭包是起函数的作用并可以像对象一样操作的对象。与此类似,FP 语言支持高阶函数。高阶函数可以用另一个函数(间接地,用一个表达式) 作为其输入参数,在某些情况下,它甚至返回一个函数作为其输出参数。这两种结构结合在一起 阅读全文
posted @ 2018-03-26 19:26 zzfx 阅读(142) 评论(0) 推荐(0) 编辑
摘要:函数式编程 函数式编程是种编程方式,它将电脑运算视为函数的计算。 而函数式编程是面向数学的抽象,将计算描述为一种表达式求值,一句话,函数式程序就是一个表达式。 面向计算?! In computer science, functional programming is a programming pa 阅读全文
posted @ 2018-03-26 19:20 zzfx 阅读(238) 评论(0) 推荐(0) 编辑