文档章节

Haskell的仿函数

通九互联科技
 通九互联科技
发布于 2015/05/07 03:35
字数 335
阅读 177
收藏 2

仿函数的数学定义如下

设 C 和 D 为集合,从 C 至 D 有一映射F
将每个对象 X ∈ C 映射至一对象 F(X) ∈ D 上,
将每个态射 f:X ⟶ Y ∈ C 映射至一态射 F(f):F(X) ⟶ F(Y) ∈ D 上,

Haskell的仿函数是一个class,其中主要的抽象函数是fmap

fmap        :: (a -> b) -> f a -> f b

Haskell在Functor的注释中提到了Haskell仿函数的两条规则。

第一条是,如果我们使用函数id作为映射,那么我们的返回结果应当是作为参数仿函数

Haskell的表达方式如下
fmap id a = a

数学表达方式如下
对任何对象 X ∈ C,恒有 F(id(x)) = id(F(x))

第二条是,使用组合函数作为映射,得到的结果,应当保证同组合函数中的函数按照顺序作为映射函数的结果相同。

Haskell的表达式如下
fmap (f . g) = fmap f . fmap g
或者
fmap (f . g) F = fmap f (fmap g F)

数学表达方式如下
F(f.g) = F(g).F(f)


© 著作权归作者所有

通九互联科技
粉丝 133
博文 38
码字总数 21941
作品 1
大连
个人站长
私信 提问
Haskell 语言为什么值得你去学习

当我向一些新手推荐学习Haskell语言时,得到的反应通常是:“为什么要学Haskell?”,“这是一种实用的语言吗?”或者“这是一种我可以真正用的语言吗?”我的回答是明确的YES。 Haskell并不...

oschina
2013/03/12
7.5K
22
Haskell 2014.2 发布,函数式编程语言

函数式编程语言 Haskell 2014.2 发布了,改进记录请看 changelog (表示没看懂) Haskell是一种纯函数式编程语言,它的命名源自美国数学家Haskell Brooks Curry,他在数学逻辑方面上的工作使...

oschina
2014/08/11
2.5K
13
《Haskell趣学指南》笔记之基本语法

系列文章 《Haskell趣学指南》笔记之基本语法 《Haskell趣学指南》笔记之类型(type) 《Haskell趣学指南》笔记之函数 《Haskell趣学指南》笔记之高阶函数 《Haskell趣学指南》笔记之模块 《...

方应杭在饥人谷
05/04
0
0
(转) Twisted :第二十一部分 惰性不是迟缓: Twisted和Haskell

简介 在上一个部分我们对比了Twisted与 Erlang,并将注意力集中在它们共有的一些思想上.结果表明使用Erlang也是非常简便的,因为异步I/O和反应式编程是Erlang运行时和进程模型的关键元素. 今天...

水果糖
2016/01/27
16
0
函数式编程语言--Haskell

Haskell是一种纯函数式编程语言,它的命名源自美国数学家Haskell Brooks Curry,他在数学逻辑方面上的工作使得函数式编程语言有了广泛的基础。Haskell语言是1990年在编程语言Miranda的基础上...

匿名
2009/12/15
14.8K
2

没有更多内容

加载失败,请刷新页面

加载更多

Mysql的sql_mode模式

sql_mode 是一个很容易被忽视的配置,宽松模式下可能会被输入一些非准确数据,所以生产环境下会要求为严格模式,为了保持生产环境和开发环境,测试环境一致性,我们开发环境和测试环境也要配...

贾峰uk
21分钟前
0
0
Qt程序打包发布方法(使用官方提供的windeployqt工具)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/toTheUnknown/article/details/81748179 如果使用到了Qt ...

shzwork
50分钟前
7
0
MainThreadSupport

MainThreadSupport EventBus 3.0 中的代码片段. org.greenrobot.eventbus.MainThreadSupport 定义一个接口,并给出默认实现类. 调用者可以在EventBus的构建者中替换该实现. public interface ...

马湖村第九后羿
今天
3
0
指定要使用的形状来代替文字的显示

控制手机键盘弹出的功能只能在ios上实现,安卓是实现不了的,所以安卓只能使用type类型来控制键盘类型,例如你要弹出数字键盘就使用type="number",如果要弹出电话键盘就使用type="tel",但这...

前端老手
今天
8
0
总结:Raft协议

一、Raft协议是什么? 分布式一致性算法。即解决分布式系统中各个副本数据一致性问题。 二、Raft的日志广播过程 发送日志到所有Followers(Raft中将非Leader节点称为Follower)。 Followers收...

浮躁的码农
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部