美文网首页
函数式与范畴论随记[0]

函数式与范畴论随记[0]

作者: Yuliet | 来源:发表于2017-09-15 20:00 被阅读0次

相关概念:

1.代数系统:元素与函数的组合

2.函数是一种关系

3.群是一个二元代数系统

4.图是表达一个集合上二元关系的一种手段,用来处理离散数学模型的一个工具,对象就是结点,函数就是箭头

5.函子就是图到图的图同态,即是范畴到范畴的一种函数,它保恒等和结合,保持仍然是范畴

6.范畴是一个图,它带有两个满足恒等性和结合性的函数,identity、函数组合

7.自函子:映射到自身的

8.Monad:一个自函子范畴上的幺半群,当相同类型的嵌套时,可以通过自函子将函子里的数据“剥出来”

9.[幺半群][1]是一个带有二元运算: M × M → M 的集合 M ,其符合下列公理:

结合律:对任何在 M 内的a、b、c, (ab)c = a(bc) 。

单位元:存在一在 M 内的元素e,使得任一于 M 内的 a 都会符合 ae = e*a = a 。

9.applicative functor 简单来说Monad是context sensitive, 而Applicative是context free的。作为一个接口,它能为我们带来什么:那就是让不同 functor 可以相互应用(apply)的能力。是实现了ap方法的 pointed functor。F.of(x).map(f) == F.of(f).ap(F.of(x)

10.lift 

``` javascript 

var liftA2 = curry(function(f, functor1, functor2){returnfunctor1.map(f).ap(functor2);});

```

liftA2是个奇怪的名字,听起来像是破败工厂里挑剔的货运电梯,或者伪豪华汽车公司的个性车牌。不过你要是真正理解了,那么它的含义也就不证自明了:让那些小代码块发生 lift,成为 applicative functor 中的一员。

特性:

1.范畴中的所有元素,都拥有自函子,或者可以将一个对象看为自函子。

相关应用:

1.一个函数式语言有:

1)原始数据类型

2)每个类型的常量(单位元)

3)运算,相当于代数系统中的函数

4)构造器,它们可以作用到数据类型和运算以产生导出的数据类型和运算

语言由从原始数据类型和原始运算能导出的所有的运算和类型的集合组成。

2.结合1中的描述,函数式语言的数据是不可变的,因为我们只需要获得数据映射之后的结果,如果可以变化,那么就不是函数式了,就变成了混沌态编程;

所以也不能自己赋值变量,也不存在变量这个说法;

函数和元素都作为最基本的元素,但是在应用中,我们只能通过对范畴的各种操作(函子,或者单纯元素间的函数)来组合出我们想要的功能,所以函数是“一等公民”。

3.范畴学最厉害的地方就是组合,对任何链接的对象组,a->b->c 一定有存在一个组合可以直接 a -> c

对于函数式编程,最精髓的地方就是函数组合,通过组合函数,完成更加抽像复杂的函数。

感悟:

我们太多的被命令式语言毒害了,在以后的实践中,多利用函数式,我们应该多考虑问题本身,而不是在如何实现方面。

目前在函数式中,有多种做法,因为对范畴的理解也不经相同,想更加了解函数式编程应该去,用一下Haskell,因为它已经有很久的历史了,也统一了很多标准,有用的留下,没用的废弃,当我们用Haskell完成几个项目之后,能更有所了解。

相关文章

  • 函数式与范畴论随记[0]

    相关概念: 1.代数系统:元素与函数的组合 2.函数是一种关系 3.群是一个二元代数系统 4.图是表达一个集合上二...

  • 函数式和范畴论

  • 函数式编程入门

    编程思路的概念[补充] 函数式编程思维范畴论基本理论基本概念纯函数函数的柯里化函数的组合Point Free声明式...

  • 函数式编程

    现在大公司的编程方式有: 范畴论Category Theory 函数式编程是范畴论的数学分支是一门很复杂的数学,认...

  • Haskell: 序

    这厮是函数式编程语言,据说与数学有那么点暧昧!(什么 范畴论啊blabla...)打算学习一下 官网

  • 函数式编程一

    1、函数式编程思维 函数式编程,是用数学思维编程(1)起源于范畴论,彼此之间存在某种关系的概念、事物、对象等等,都...

  • 函子与单子--从范畴论到编程

    作为一名计算机工作者,理解范畴论中的函子与单子的目的,还是为了更好的理解函数式编程中的函子与单子,对于我来说,没有...

  • 数论 代数 群论 范畴论 与 函数式编程 Haskell, Sc

    来自China Scala User Group 微信群的一段话,讲的很有意思,这里摘录一下: 数论 研究一个一个...

  • 《科学中的范畴论》学习笔记c2.1

    集合论是所有数学的基础。集合和函数的概念将作为一个基础来构建范畴论,它们被大家所了解,所以作为一些范畴论概念的直觉...

  • Swift中的函数式编程:一个不平常且强大的范例

    0. 译者序 笔者读了《函数式Swift》、各种网文等,对函数式编程的理解依然有些模糊。出现这种现象与以下几种原因...

网友评论

      本文标题:函数式与范畴论随记[0]

      本文链接:https://www.haomeiwen.com/subject/ndyjsxtx.html