本文感发于Bartosz Milewski的网络新书“Category Theory for Programmers" (免费)

category theory是一门抽象的数学理论。Bartosz试图把它在编程方面的应用,解释给程序员。强烈推荐阅读原作。

还没看过的,或者在犹豫是否要花时间看看,且听我说说先。

引言

给你一袋面粉,让你烤个面包。

你把面粉,酵母,其他配料按比例配好。然后发面,放烤箱。

烤到一半,家里来人了,面包太小,不够吃,要整个大的。怎么办?

烤过面包的都知道,你不能再整一块面,和原来的面团掺和在一起,一块烤。你只能重新再烤一个大的。

编过程的都知道,你程序快编完了,有人提出要加功能(小面包变大面包问题)。或者有人给你块老面,让你加块新面,烤成大面包(掺和面团问题)。这些都是很棘手的问题。

category theory教你如何把各种面团掺和在一起,把面包做大。

1. 让面发着

我们如果把烤面包的类比再扯的远一点。问题的关键是:一旦烘烤的化学过程发生了,就不可逆了,面团很难再撮合到一起了。

要让面团随意组合,揉捏,保持可塑性,必须使其停留在可逆反应阶段。简单说,让面发着

category theory只研究两样东西:面团(object)和揉面(morphism).

category theory有个简单规则:
如果面团形状A,可以先揉成形状B,然后揉成形状C,那么面团一定可以从形状A直接揉成形状C

category theory 简介相关推荐

  1. UA OPTI570 量子力学30 Degenerate Stationary Perturbation Theory简介

    UA OPTI570 量子力学30 Degenerate Stationary Perturbation Theory简介 回顾:Nondegenerate Stationary Perturbati ...

  2. Category Theory 随笔

    什么可以帮助我们编程? 抽象[Abstrction]:抽象[abstraction]一词来源于希腊语,和减法[substraction]的意思差不多 ,这意味着"摆脱不必要的细节" ...

  3. Category Theory: 01 One Structured Family of Structures

    Category Theory: 01 One Structured Family of Structures 这次看来要放弃了.看了大概三分之一.似乎不能够让注意力集中了.先更新吧. 群的定义 \( ...

  4. 排队论(Queuing theory)简介

    Preliminary Questions 1.What does affect the performance of --a computer system? --a computer networ ...

  5. Basic Category Theory 基本猫论

    什么是范畴?范畴包括: 一组对象, 一组箭头(一般叫做态射morphisms), f:A->B意为f的实体(dom/domain)是A,值域(cod/codomain)是B 箭头运算 ident ...

  6. LASSO与Item Response Theory模型中的隐变量选择

    LASSO与Item Response Theory模型中的隐变量选择 Item Response Theory简介 统计模型 Latent Traits Selection 两参数模型的LASSO ...

  7. Category 特性在 iOS 组件化中的应用与管控

    背景 iOS Category功能简介 Category 是 Objective-C 2.0之后添加的语言特性. Category 就是对装饰模式的一种具体实现.它的主要作用是在不改变原有类的前提下, ...

  8. Category (mathematics)

    In mathematics, a category (sometimes called an abstract category to distinguish it from a concrete ...

  9. Haskell / GHC中的“ forall”关键字有什么作用?

    本文翻译自:What does the `forall` keyword in Haskell/GHC do? I'm beginning to understand how the forall k ...

  10. 计算机开放电子书归档 2018

    97 Things Every Programmer Should Know Gitee 下载 Github 下载 SourceForge 下载 A Java Reference (UCB CS61b ...

最新文章

  1. Multi-task Learning(Review)多任务学习概述
  2. struts2处理上传文件路径问题
  3. JavaScript之数据类型
  4. 使用树莓派搭建WordPress个人博客
  5. bash-shell详解
  6. 数据库基础系列之一:MySQL账户
  7. SAP中的“定单状态”
  8. 大数据分析平台的发展趋势如何
  9. Android中设置位移动画的停止
  10. CC2640R2学习笔记—CCS环境最简单配置、下载运行第一个程序(OLED)
  11. 【三思笔记】 全面学习Oracle分区表及分区索引
  12. 仿真工具NS3的基本知识
  13. Report Machine(RM)报表控件简单用法-delphi
  14. Amaze UI后台管理模板 v2.7.2
  15. 使用spark计算IRR(内部收益率)
  16. Latex特殊符号波浪号~,^
  17. 怎么打开和修改dll文件的?如何调用和编辑?
  18. 超详细的数据分析职业规划
  19. 编程训练4-统计单词平均长度
  20. <urlopen error [Errno 104] Connection reset by peer>

热门文章

  1. Spark视频王家林大神 第7课: Spark机器学习内幕剖析
  2. 计算机怎样设置光盘启动项,怎么设置开机启动项-设置光盘启动教程
  3. 转贴与JUNSANSI(大小写转换函数Oracle)
  4. 华为云迁移工具推荐最佳实践:Hyper-V虚拟化迁移到华为云
  5. TypeError: conv2d() received an invalid combination of arguments
  6. 【Datawhale第25期组队学习】Task01:异常检测概念和方法
  7. 操作系统 存储管理实验报告
  8. 快速推导出等比数列的求和公式
  9. 量化投资学习-30:股性与人性,从傅里叶变换谈谈股市大V的操作风格的观察
  10. 股票涨跌速率对应操作策略和后市走势分析