category theory 简介
本文感发于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 简介相关推荐
- UA OPTI570 量子力学30 Degenerate Stationary Perturbation Theory简介
UA OPTI570 量子力学30 Degenerate Stationary Perturbation Theory简介 回顾:Nondegenerate Stationary Perturbati ...
- Category Theory 随笔
什么可以帮助我们编程? 抽象[Abstrction]:抽象[abstraction]一词来源于希腊语,和减法[substraction]的意思差不多 ,这意味着"摆脱不必要的细节" ...
- Category Theory: 01 One Structured Family of Structures
Category Theory: 01 One Structured Family of Structures 这次看来要放弃了.看了大概三分之一.似乎不能够让注意力集中了.先更新吧. 群的定义 \( ...
- 排队论(Queuing theory)简介
Preliminary Questions 1.What does affect the performance of --a computer system? --a computer networ ...
- Basic Category Theory 基本猫论
什么是范畴?范畴包括: 一组对象, 一组箭头(一般叫做态射morphisms), f:A->B意为f的实体(dom/domain)是A,值域(cod/codomain)是B 箭头运算 ident ...
- LASSO与Item Response Theory模型中的隐变量选择
LASSO与Item Response Theory模型中的隐变量选择 Item Response Theory简介 统计模型 Latent Traits Selection 两参数模型的LASSO ...
- Category 特性在 iOS 组件化中的应用与管控
背景 iOS Category功能简介 Category 是 Objective-C 2.0之后添加的语言特性. Category 就是对装饰模式的一种具体实现.它的主要作用是在不改变原有类的前提下, ...
- Category (mathematics)
In mathematics, a category (sometimes called an abstract category to distinguish it from a concrete ...
- Haskell / GHC中的“ forall”关键字有什么作用?
本文翻译自:What does the `forall` keyword in Haskell/GHC do? I'm beginning to understand how the forall k ...
- 计算机开放电子书归档 2018
97 Things Every Programmer Should Know Gitee 下载 Github 下载 SourceForge 下载 A Java Reference (UCB CS61b ...
最新文章
- Multi-task Learning(Review)多任务学习概述
- struts2处理上传文件路径问题
- JavaScript之数据类型
- 使用树莓派搭建WordPress个人博客
- bash-shell详解
- 数据库基础系列之一:MySQL账户
- SAP中的“定单状态”
- 大数据分析平台的发展趋势如何
- Android中设置位移动画的停止
- CC2640R2学习笔记—CCS环境最简单配置、下载运行第一个程序(OLED)
- 【三思笔记】 全面学习Oracle分区表及分区索引
- 仿真工具NS3的基本知识
- Report Machine(RM)报表控件简单用法-delphi
- Amaze UI后台管理模板 v2.7.2
- 使用spark计算IRR(内部收益率)
- Latex特殊符号波浪号~,^
- 怎么打开和修改dll文件的?如何调用和编辑?
- 超详细的数据分析职业规划
- 编程训练4-统计单词平均长度
- <urlopen error [Errno 104] Connection reset by peer>
热门文章
- Spark视频王家林大神 第7课: Spark机器学习内幕剖析
- 计算机怎样设置光盘启动项,怎么设置开机启动项-设置光盘启动教程
- 转贴与JUNSANSI(大小写转换函数Oracle)
- 华为云迁移工具推荐最佳实践:Hyper-V虚拟化迁移到华为云
- TypeError: conv2d() received an invalid combination of arguments
- 【Datawhale第25期组队学习】Task01:异常检测概念和方法
- 操作系统 存储管理实验报告
- 快速推导出等比数列的求和公式
- 量化投资学习-30:股性与人性,从傅里叶变换谈谈股市大V的操作风格的观察
- 股票涨跌速率对应操作策略和后市走势分析