base-4.14.1.0:基本库
版权(c) 格拉斯哥大学2001
许可证BSD样式(请参阅文件库/base/LICENSE)
维护人员librarys@haskell.org
稳定性临时的
便携性便携式的
安全哈斯克尔值得信赖的
语言哈斯克尔2010

控制。莫纳德

描述

这个Functor函数,莫纳德MonadPlus系列类,对monad进行一些有用的操作。

剧情简介

Functor和monad类

Functor(仿真器)(f)哪里 来源 #

A型(f)如果它提供函数,则为Functor功能性维修计划给定任何类型b条允许您应用来自(a->b)转动财务报表(f)b,保留的结构(f).此外(f)需要遵守以下规定:

身份
功能性维修计划 身份证件==身份证件
组成
功能性维修计划(f、g)==功能性维修计划f、。功能性维修计划

请注意,第二定律遵循类型的自由定理功能性维修计划第一定律,所以你只需要检查前一个条件是否成立。

最小完整定义

功能性维修计划

方法

功能地图::(a->b)->f a->f b来源 #

使用应用Do: '功能性维修计划f作为'可以理解为这个表达

执行<-as纯(f a)

带有推断Functor(仿真器)约束。

(<$)::a->f b->f a中缀4 来源 #

用相同的值替换输入中的所有位置。默认定义为功能性维修计划.常数,但这可能是被更有效的版本覆盖。

使用应用Do: '<$英国标准'可以理解为表达

做bs纯a

带有推断Functor(仿真器)约束。

实例

实例详细信息
Functor(仿真器)[] 来源 #

自:2.1

实例详细信息

定义于全球总部。底座

方法

功能性维修计划::(a->b)->[a]->[b]来源 #

(<$)::a->[b]->[a]来源 #

Functor(仿真器) 也许 吧 来源 #

自:2.1

实例详细信息

定义于全球总部。底座

Functor(仿真器) IO(输入输出) 来源 #

自:2.1

实例详细信息

定义于全球总部。底座

Functor(仿真器) 第1部分 来源 #

自:4.9.0.0

实例详细信息

定义于全球总部。泛型

Functor(仿真器) 非空 来源 #

自:4.9.0.0

实例详细信息

定义于全球总部。底座

方法

功能性维修计划::(a->b)->非空a->非空b条来源 #

(<$)::a->非空b->非空来源 #

Functor(仿真器) NoIO公司 来源 #

自:4.8.0.0

实例详细信息

定义于全球总部。解释方式

Functor(仿真器) ReadP(读取P) 来源 #

自:2.1

实例详细信息

定义于文本。ParserCombinators。ReadP(读取P)

Functor(仿真器) ReadPrec(预读) 来源 #

自:2.1

实例详细信息

定义于文本。ParserCombinators。ReadPrec(预读)

Functor(仿真器) 向下 来源 #

自:4.11.0.0

实例详细信息

定义于数据。订单

方法

功能地图::(a->b)->向下a->向下b条来源 #

(<$)::a->向下b->向下来源 #

Functor(仿真器) 产品 来源 #

自:4.8.0.0

实例详细信息

定义于数据。半群。内部

方法

功能性维修计划::(a->b)->产品a->产品b条来源 #

(<$)::a->产品b->产品来源 #

Functor(仿真器) 总和 来源 #

自:4.8.0.0

实例详细信息

定义于数据。半群。内部

方法

功能性维修计划::(a->b)->总和a->总和b条来源 #

(<$)::a->总和b->总和来源 #

Functor(仿真器) 二重的 来源 #

自:4.8.0.0

实例详细信息

定义于数据。半群。内部

Functor(仿真器) 最后 来源 #

自:4.8.0.0

实例详细信息

定义于数据。单体

方法

功能性维修计划::(a->b)->最后a->最后b条来源 #

(<$)::a->最后b->最后来源 #

Functor(仿真器) 弗斯特 来源 #

自:4.8.0.0

实例详细信息

定义于数据。单体

Functor(仿真器) STM公司 来源 #

自:4.3.0.0

实例详细信息

定义于全球总部。浓度。同步

Functor函数 处理程序 来源 #

自:4.6.0.0

实例详细信息

定义于控制。例外情况

Functor函数 身份 来源 #

自:4.8.0.0

实例详细信息

定义于数据。仿真器。身份

方法

功能性维修计划::(a->b)->身份a->身份b条来源 #

(<$)::a->身份b->身份来源 #

Functor(仿真器) 邮编列表 来源 #

自:2.1

实例详细信息

定义于控制。适用

Functor(仿真器) ArgDescr公司 来源 #

自:4.6.0.0

实例详细信息

定义于系统。慰问。GetOpt(获取选项)

Functor(仿真器) OptDescr(光学描述) 来源 #

自:4.6.0.0

实例详细信息

定义于系统。慰问。GetOpt(获取选项)

Functor(仿真器) ArgOrder公司 来源 #

自:4.6.0.0

实例详细信息

定义于系统。慰问。GetOpt(获取选项)

Functor(仿真器) 选项 来源 #

自:4.9.0.0

实例详细信息

定义于数据。半群

方法

功能性维修计划::(a->b)->选项a->选项b条来源 #

(<$)::a->选项b->选项来源 #

Functor(仿真器) 最后 来源 #

自:4.9.0.0

实例详细信息

定义于数据。半群

方法

功能性维修计划::(a->b)->最后a->最后b条来源 #

(<$)::a->最后b->最后来源 #

Functor(仿真器) 弗斯特 来源 #

自:4.9.0.0

实例详细信息

定义于数据。半群

Functor(仿真器) 马克斯 来源 #

自:4.9.0.0

实例详细信息

定义于数据。半群

Functor(仿真器) 分钟 来源 #

自:4.9.0.0

实例详细信息

定义于数据。半群

方法

功能性维修计划::(a->b)->分钟a->分钟b条来源 #

(<$)::a->分钟b->分钟来源 #

Functor(仿真器) 复杂 来源 #

自:4.9.0.0

实例详细信息

定义于数据。复杂

方法

功能地图::(a->b)->复杂a->复杂b条来源 #

(<$)::a->复杂b->复杂来源 #

Functor(仿真器)(要么a) 来源 #

自:3.0

实例详细信息

定义于数据。要么

方法

功能性维修计划::(a0->b)->要么a a0->要么a b来源 #

(<$)::a0->要么a b->要么a a0来源 #

Functor(仿真器)(第1版::类型->类型) 来源 #

自:4.9.0.0

实例详细信息

定义于全球总部。泛型

方法

功能性维修计划::(a->b)->第1版a->第1版b条来源 #

(<$)::a->第1版b->第1版来源 #

Functor(仿真器)(1号机组::类型->类型) 来源 #

自:4.9.0.0

实例详细信息

定义于全球总部。泛型

Functor(仿真器)((,)a) 来源 #

自:2.1

实例详细信息

定义于全球总部。底座

方法

功能性维修计划::(a0->b)->(a,a0)->(b)来源 #

(<$)::a0->(a,b)->(a,a0)来源 #

Functor(仿真器)(装货单s) 来源 #

自:2.1

实例详细信息

定义于全球总部。装货单

方法

功能地图::(a->b)->装货单s a->装货单s b公司来源 #

(<$)::a->装货单s b->装货单是一个来源 #

Functor(仿真器)(阵列i) 来源 #

自:2.1

实例详细信息

定义于全球总部。Arr公司

方法

功能性维修计划::(a->b)->阵列i a->阵列i b类来源 #

(<$)::a->阵列i b->阵列我是来源 #

Functor(仿真器)(代理::类型->类型) 来源 #

自:4.7.0.0

实例详细信息

定义于数据。代理

方法

功能性维修计划::(a->b)->代理a->代理b条来源 #

(<$)::a->代理b->代理来源 #

箭头a=>Functor(仿真器)(箭头Monada) 来源 #

自:4.6.0.0

实例详细信息

定义于控制。箭头

莫纳德m=>Functor(仿真器)(WrappedMonad包装单体米) 来源 #

自:2.1

实例详细信息

定义于控制。适用

Functor(仿真器)(装货单s) 来源 #

自:2.1

实例详细信息

定义于控制。莫纳德。ST.懒惰。Imp公司

方法

功能性维修计划::(a->b)->装货单s a->装货单s b公司来源 #

(<$)::a->装货单s b->装货单是一个来源 #

Functor(仿真器)(精氨酸a) 来源 #

自:4.9.0.0

实例详细信息

定义于数据。半群

方法

功能地图::(a0->b)->精氨酸a a0->精氨酸a b来源 #

(<$)::a0->精氨酸a b->精氨酸a a0来源 #

Functor(仿真器)f=>Functor(仿真器)(1级可采收水平f) 来源 #

自:4.9.0.0

实例详细信息

定义于全球总部。泛型

Functor(仿真器)(URec公司 烧焦::类型->类型) 来源 #

自:4.9.0.0

实例详细信息

定义于全球总部。泛型

Functor(仿真器)(URec公司 双精度::类型->类型) 来源 #

自:4.9.0.0

实例详细信息

定义于全球总部。泛型

Functor(仿真器)(URec公司 浮动::类型->类型) 来源 #

自:4.9.0.0

实例详细信息

定义于全球总部。泛型

Functor(仿真器)(URec公司 国际::类型->类型) 来源 #

自:4.9.0.0

实例详细信息

定义于全球总部。泛型

Functor(仿真器)(URec公司 单词::类型->类型) 来源 #

自:4.9.0.0

实例详细信息

定义于全球总部。泛型

Functor(仿真器)(URec公司(Ptr公司()) ::类型->类型) 来源 #

自:4.9.0.0

实例详细信息

定义于全球总部。泛型

Functor(仿真器)((,,)a b) 来源 #

自:4.14.0.0

实例详细信息

定义于全球总部。底座

方法

功能性维修计划::(a0->b0)->(a,b,a0)->来源 #

(<$)::a0->(a,b,b0)->(a,b,a0)来源 #

Functor(仿真器)f=>Functor(仿真器)(中高音f) 来源 #

自:4.8.0.0

实例详细信息

定义于数据。半群。内部

方法

功能性维修计划::(a->b)->中高音f a->中高音(f)b来源 #

(<$)::a->中高音f b->中高音财务报表来源 #

Functor(仿真器)f=>Functor(仿真器)(阿普f) 来源 #

自:4.12.0.0

实例详细信息

定义于数据。单体

方法

功能性维修计划::(a->b)->阿普f a->阿普(f)b来源 #

(<$)::a->阿普f b->阿普财务报表来源 #

Functor(仿真器)(施工男::类型->类型) 来源 #

自:2.1

实例详细信息

定义于数据。仿真器。施工

方法

功能性维修计划::(a->b)->施工毫安->施工百万桶来源 #

(<$)::a->施工m b->施工百万来源 #

Functor(仿真器)m=>Functor(仿真器)(克莱斯利(百万美元) 来源 #

自:4.14.0.0

实例详细信息

定义于控制。箭头

方法

功能性维修计划::(a0->b)->克莱斯利m a a0->克莱斯利马可比来源 #

(<$):a0->克莱斯利毫巴->克莱斯利我是阿0来源 #

箭头a=>Functor(仿真器)(折回箭头a b) 来源 #

自:2.1

实例详细信息

定义于控制。适用

方法

功能性维修计划::(a0->b0)->包装箭头a b a0->折回箭头a b b0来源 #

(<$)::a0->折回箭头a b b0->折回箭头a b a0来源 #

Functor(仿真器)((->)r::类型->类型) 来源 #

自:2.1

实例详细信息

定义于全球总部。底座

方法

功能性维修计划::(a->b)->(r->a)->r->b来源 #

(<$)::a->(r->b)->r->a来源 #

Functor(仿真器)(第1页抄送:类型->类型) 来源 #

自:4.9.0.0

实例详细信息

定义于全球总部。泛型

方法

功能性维修计划::(a->b)->第1页信用卡->第1页我c b来源 #

(<$)::a->第1页i c b->第1页国际商会来源 #

(Functor(仿真器)f、,Functor(仿真器)g) =>Functor(仿真器)(f):+:g) 来源 #

自:4.9.0.0

实例详细信息

定义于全球总部。泛型

方法

功能性维修计划::(a->b)->(f:+:g) a->(f:+:g) b条来源 #

(<$)::a->(f:+:g) b->(f:+:g) 一个来源 #

(Functor(仿真器)f、,Functor(仿真器)g) =>Functor(仿真器)(f):*:g) 来源 #

自:4.9.0.0

实例详细信息

定义于全球总部。泛型

方法

功能性维修计划::(a->b)->(f:*:g) a->(f:*:g) b条来源 #

(<$)::a->(f:*:g) b->(f:*:g) 一个来源 #

Functor(仿真器)((,,,)a b c) 来源 #

自:4.14.0.0

实例详细信息

定义于全球总部。底座

方法

功能性维修计划::(a0->b0)->(a,b,c,a0)->来源 #

(<$)::a0->(a,b,c,b0)->(a,b,c,a0)来源 #

(Functor(仿真器)f、,Functor(仿真器)g) =>Functor(仿真器)(总和f g) 来源 #

自:4.9.0.0

实例详细信息

定义于数据。仿真器。总和

方法

功能性维修计划::(a->b)->总和f g a->总和f组b来源 #

(<$)::a->总和f g b->总和f g a公司来源 #

(Functor(仿真器)f、,Functor(仿真器)g) =>Functor(仿真器)(产品f g) 来源 #

自:4.9.0.0

实例详细信息

定义于数据。仿真器。产品

方法

功能性维修计划::(a->b)->产品f g a->产品f组b来源 #

(<$)::a->产品f g b->产品f g a公司来源 #

Functor(仿真器)f=>Functor(仿真器)(M1米i c f) 来源 #

自:4.9.0.0

实例详细信息

定义于全球总部。泛型

方法

功能性维修计划::(a->b)->M1米i c f a->M1米i c f b公司来源 #

(<$)::a->M1米i c f b->M1米国际货币基金组织来源 #

(Functor(仿真器)f、,Functor(仿真器)g) =>Functor函数(f):.:g) 来源 #

自:4.9.0.0

实例详细信息

定义于全球总部。泛型

方法

功能性维修计划::(a->b)->(f:.:g) a->(f:.:g) b条来源 #

(<$)::a->(f:.:g) b->(f:。:g) 一个来源 #

(Functor(仿真器)f、,Functor(仿真器)g) =>Functor(仿真器)(撰写f g) 来源 #

自:4.9.0.0

实例详细信息

定义于数据。仿真器。撰写

方法

功能性维修计划::(a->b)->撰写f g a->撰写f组b来源 #

(<$)::a->撰写f g b->撰写f g a公司来源 #

适用m=>莫纳德哪里 来源 #

这个莫纳德类定义对单子,一个来自数学分支的概念,称为范畴理论.然而,从Haskell程序员的角度来看,最好把单子想象成抽象数据类型共个操作。哈斯克尔的表达式为书写提供了方便的语法一元表达式。

的实例莫纳德应满足以下要求:

左侧标识
返回>>=k=千安
正确的身份
>>= 返回=米
关联性
>>=(\x->k x>>=h) =(米>>=k)>>=小时

此外莫纳德适用操作应如下所示:

上述法律意味着:

还有那个纯净的和(<*>)满足实用函子定律。

的实例莫纳德对于列表,也许 吧IO(输入输出)定义在前奏曲满足这些法律。

最小完整定义

(>>=)

方法

(>>=)::对于所有人a b.m a->(a->m b)->m b中缀1 来源 #

按顺序组合两个操作,传递产生的任何值以第一个作为第二个的论点。

'作为>>=英国标准'可以理解为表达

执行<-as英国标准协会

(>>)::对于所有人a b.m a->m b->m b中缀1 来源 #

按顺序组合两个操作,丢弃产生的任何值通过第一个,比如排序操作符(比如分号)命令式语言。

'作为>>英国标准'可以理解为表达

作为英国标准

返回::a->m a来源 #

向一元类型中注入一个值。

实例

实例详细信息
莫纳德[] 来源 #

自:2.1

实例详细信息

定义于全球总部。底座

方法

(>>=):[a]->(a->[b])->[b]来源 #

(>>)::[a]->[b]->[b]来源 #

返回::a->[a]来源 #

莫纳德 也许 吧 来源 #

自:2.1

实例详细信息

定义于全球总部。底座

莫纳德 IO(输入输出) 来源 #

自:2.1

实例详细信息

定义于全球总部。底座

莫纳德 第1部分 来源 #

自:4.9.0.0

实例详细信息

定义于全球总部。泛型

莫纳德 非空 来源 #

自:4.9.0.0

实例详细信息

定义于全球总部。底座

方法

(>>=)::非空a->(a->非空b) ->非空b条来源 #

(>>)::非空a->非空b->非空b条来源 #

返回::a->非空来源 #

莫纳德 NoIO公司 来源 #

自:4.4.0.0

实例详细信息

定义于全球总部。解释方式

莫纳德 ReadP(读取P) 来源 #

自:2.1

实例详细信息

定义于文本。ParserCombinators。ReadP(读取P)

莫纳德 ReadPrec(预读) 来源 #

自:2.1

实例详细信息

定义于文本。ParserCombinators。ReadPrec(预读)

莫纳德 向下 来源 #

自:4.11.0.0

实例详细信息

定义于数据。订单

方法

(>>=)::向下a->(a->向下b) ->向下b条来源 #

(>>)::向下a->向下b->向下b条来源 #

返回::a->向下来源 #

莫纳德 产品 来源 #

自:4.8.0.0

实例详细信息

定义于数据。半群。内部

方法

(>>=)::产品a->(a->产品b) ->产品b条来源 #

(>>)::产品a->产品b->产品b条来源 #

返回::a->产品来源 #

莫纳德 总和 来源 #

自:4.8.0.0

实例详细信息

定义于数据。半群。内部

方法

(>>=)::总和a->(a->总和b) ->总和b条来源 #

(>>)::总和a->总和b->总和b条来源 #

返回::a->总和来源 #

莫纳德 二重的 来源 #

自:4.8.0.0

实例详细信息

定义于数据。半群。内部

莫纳德 最后 来源 #

自:4.8.0.0

实例详细信息

定义于数据。单体

方法

(>>=)::最后a->(a->最后b) ->最后b条来源 #

(>>)::最后a->最后b->最后b条来源 #

返回::a->最后来源 #

莫纳德 弗斯特 来源 #

自:4.8.0.0

实例详细信息

定义于数据。单体

莫纳德 STM公司 来源 #

自:4.3.0.0

实例详细信息

定义于全球总部。浓度。同步

莫纳德 身份 来源 #

自:4.8.0.0

实例详细信息

定义于数据。仿真器。身份

方法

(>>=)::身份a->(a->身份b) ->身份b条来源 #

(>>)::身份a->身份b->身份b条来源 #

返回::a->身份来源 #

莫纳德 选项 来源 #

自:4.9.0.0

实例详细信息

定义于数据。半群

方法

(>>=)::选项a->(a->选项b) ->选项b条来源 #

(>>)::选项a->选项b->选项b条来源 #

返回::a->选项来源 #

莫纳德 最后 来源 #

自:4.9.0.0

实例详细信息

定义于数据。半群

方法

(>>=)::最后a->(a->最后b) ->最后b条来源 #

(>>)::最后a->最后b->最后b条来源 #

返回::a->最后来源 #

莫纳德 弗斯特 来源 #

自:4.9.0.0

实例详细信息

定义于数据。半群

莫纳德 马克斯 来源 #

自:4.9.0.0

实例详细信息

定义于数据。半群

莫纳德 分钟 来源 #

自:4.9.0.0

实例详细信息

定义于数据。半群

方法

(>>=)::分钟a->(a->分钟b) ->分钟b条来源 #

(>>)::分钟a->分钟b->分钟b条来源 #

返回::a->分钟来源 #

莫纳德 复杂 来源 #

自:4.9.0.0

实例详细信息

定义于数据。复杂

方法

(>>=)::复杂a->(a->复杂b) ->复杂b条来源 #

(>>)::复杂a->复杂b->复杂b条来源 #

返回::a->复杂来源 #

莫纳德(要么e) 来源 #

自:4.4.0.0

实例详细信息

定义于数据。要么

方法

(>>=)::要么e a->(a->要么e b)->要么电子商务来源 #

(>>)::要么e a->要么e b->要么电子商务来源 #

返回::a->要么电子商务来源 #

莫纳德(1号机组::类型->类型) 来源 #

自:4.9.0.0

实例详细信息

定义于全球总部。泛型

单体a=>莫纳德((,)a) 来源 #

自:4.9.0.0

实例详细信息

定义于全球总部。底座

方法

(>>=)::(a,a0)->(a0->(a,b))->(a,b)来源 #

(>>)::(a,a0)->(a,b)->(b)来源 #

返回::a0->(a,a0)来源 #

莫纳德(装货单s) 来源 #

自:2.1

实例详细信息

定义于全球总部。装货单

方法

(>>=)::装货单s a->(a->装货单s b)->装货单s b公司来源 #

(>>)::装货单s a->装货单s b->装货单s b公司来源 #

返回::a->装货单是一个来源 #

莫纳德(代理::类型->类型) 来源 #

自:4.7.0.0

实例详细信息

定义于数据。代理

方法

(>>=)::代理a->(a->代理b) ->代理b条来源 #

(>>)::代理a->代理b->代理b条来源 #

返回::a->代理来源 #

箭头应用a=>莫纳德(箭头Monada) 来源 #

自:2.1

实例详细信息

定义于控制。箭头

莫纳德m=>莫纳德(WrappedMonad包装单体米) 来源 #

自:4.7.0.0

实例详细信息

定义于控制。适用

莫纳德(装货单s) 来源 #

自:2.1

实例详细信息

定义于控制。莫纳德。ST.懒惰。Imp公司

方法

(>>=)::装货单s a->(a->装货单s b)->装货单秒b来源 #

(>>)::装货单s a->装货单s b->装货单s b公司来源 #

返回::a->装货单是一个来源 #

莫纳德f=>莫纳德(1级可采收水平f) 来源 #

自:4.9.0.0

实例详细信息

定义于全球总部。泛型

(单体a、,单体b) =>莫纳德((,,)a b) 来源 #

自:4.14.0.0

实例详细信息

定义于全球总部。底座

方法

(>>=)::(a,b,a0)->(a0->(a,b,b0))->(a、b、b0)来源 #

(>>)::(a,b,a0)->(a,b,b0)->来源 #

返回::a0->(a,b,a0)来源 #

莫纳德f=>莫纳德(中高音f) 来源 #

自:4.8.0.0

实例详细信息

定义于数据。半群。内部

方法

(>>=)::中高音f a->(a->中高音f b)->中高音(f)b来源 #

(>>)::中高音f a->中高音f b->中高音(f)b来源 #

返回::a->中高音财务报表来源 #

莫纳德f=>莫纳德(阿普f) 来源 #

自:4.12.0.0

实例详细信息

定义于数据。单体

方法

(>>=)::阿普f a->(a->阿普f b)->阿普(f)b来源 #

(>>)::阿普f a->阿普f b->阿普(f)b来源 #

返回::a->阿普财务报表来源 #

莫纳德m=>莫纳德(克莱斯利(百万美元) 来源 #

自:4.14.0.0

实例详细信息

定义于控制。箭头

方法

(>>=)::克莱斯利m a a0->(a0->克莱斯利m a b)->克莱斯利我是个混蛋来源 #

(>>)::克莱斯利m a a0->克莱斯利毫巴->克莱斯利马可比来源 #

返回::a0->克莱斯利我是阿0来源 #

莫纳德((->)r::类型->类型) 来源 #

自:2.1

实例详细信息

定义于全球总部。底座

方法

(>>=)::(r->a)->(a->r->b)->r->b来源 #

(>>)::(r->a)->(r->b)->r->b来源 #

返回::a->r->a来源 #

(莫纳德f、,莫纳德g) =>莫纳德(f):*:g) 来源 #

自:4.9.0.0

实例详细信息

定义于全球总部。泛型

方法

(>>=)::(f:*:g) a->(a->(f:*:g) b)->(f):*:g) b条来源 #

(>>)::(f:*:g) a->(f:*:g) b->(f:*:g) b来源 #

返回::a->(f:*:g) 一个来源 #

(单体a、,单体b、,单体c) =>莫纳德((,,,)a b c) 来源 #

自:4.14.0.0

实例详细信息

定义于全球总部。底座

方法

(>>=)::(a,b,c,a0)->来源 #

(>>)::(a,b,c,a0)->(a,b,c,b0)->来源 #

返回::a0->(a、b、c、a0)来源 #

(莫纳德f、,莫纳德g) =>莫纳德(产品f g) 来源 #

自:4.9.0.0

实例详细信息

定义于数据。仿真器。产品

方法

(>>=)::产品f g a->(a->产品f g b)->产品f组b来源 #

(>>)::产品f g a->产品f g b->产品f组b来源 #

返回::a->产品f g a公司来源 #

莫纳德f=>莫纳德(M1米i c f) 来源 #

自:4.9.0.0

实例详细信息

定义于全球总部。泛型

方法

(>>=)::M1米i c f a->(a->M1米i c f b)->M1米我c f b来源 #

(>>)::M1米i c f a->M1米i c f b->M1米i c f b公司来源 #

返回::a->M1米国际货币基金组织来源 #

莫纳德m=>单数失败哪里 来源 #

在中绑定值时-符号,左边的图案的手侧<-可能不匹配。在这种情况下,这个类提供了一个要恢复的函数。

A类莫纳德没有单数失败实例只能结合使用具有始终匹配的模式,例如newtypes、tuples、数据类型只有一个数据构造函数和无可辩驳的模式(~帕特).

的实例单数失败应符合以下法律:失败s应该>>=,

失败s>>=f=失败s

如果您的莫纳德也是MonadPlus系列,一个流行的定义是

失败_=mzero

自:4.9.0.0

方法

失败::字符串->百万来源 #

实例

实例详细信息
单数失败[] 来源 #

自:4.9.0.0

实例详细信息

定义于控制。莫纳德。失败

方法

失败::字符串->【a】来源 #

单数失败 也许 吧 来源 #

自:4.9.0.0

实例详细信息

定义于控制。莫纳德。失败

单数失败 IO(输入输出) 来源 #

自:4.9.0.0

实例详细信息

定义于控制。莫纳德。失败

单数失败 ReadP(读取P) 来源 #

自:4.9.0.0

实例详细信息

定义于文本。ParserCombinators。ReadP(读取P)

单数失败 ReadPrec(预读) 来源 #

自:4.9.0.0

实例详细信息

定义于文本。ParserCombinators。ReadPrec(预读)

单数失败(装货单s) 来源 #

自:4.11.0.0

实例详细信息

定义于全球总部。装货单

单数失败(装货单s) 来源 #

自:4.10

实例详细信息

定义于控制。莫纳德。ST.懒惰。Imp公司

单数失败f=>单数失败(阿普f) 来源 #

自:4.12.0.0

实例详细信息

定义于数据。单体

方法

失败::字符串->阿普财务报表来源 #

(备选方案米,莫纳德m) =>MonadPlus系列哪里 来源 #

单数也支持选择和失败。

最小完整定义

没有什么

方法

mzero(零点)::毫安来源 #

的身份mplus(mplus).还应满足方程式

mzero>>=f=mzerov>>mzero=mzero

默认定义为

mzero(零点)=空的

mplus(mplus)::ma->ma->ma来源 #

关联操作。默认定义为

mplus=英里/小时(<|>)

实例

实例详细信息
MonadPlus系列[] 来源 #

自:2.1

实例详细信息

定义于全球总部。底座

方法

mzero(零点)::[a]来源 #

mplus(mplus)::[a]->[a]->[a]来源 #

MonadPlus系列 也许 吧 来源 #

自:2.1

实例详细信息

定义于全球总部。底座

MonadPlus系列 IO(输入输出) 来源 #

自:4.9.0.0

实例详细信息

定义于全球总部。底座

MonadPlus系列 ReadP(读取P) 来源 #

自:2.1

实例详细信息

定义于文本。ParserCombinators。ReadP(读取P)

MonadPlus系列 ReadPrec(预读) 来源 #

自:2.1

实例详细信息

定义于文本。ParserCombinators。ReadPrec(预读)

MonadPlus系列 STM公司 来源 #

自:4.3.0.0

实例详细信息

定义于全球总部。浓度。同步

MonadPlus系列 选项 来源 #

自:4.9.0.0

实例详细信息

定义于数据。半群

MonadPlus系列(1号机组::类型->类型) 来源 #

自:4.9.0.0

实例详细信息

定义于全球总部。泛型

MonadPlus系列(代理::类型->类型) 来源 #

自:4.9.0.0

实例详细信息

定义于数据。代理

(箭头应用a、,箭头加号a) =>MonadPlus系列(箭头Monada) 来源 #

自:4.6.0.0

实例详细信息

定义于控制。箭头

MonadPlus系列f=>MonadPlus系列(1级可采收水平f) 来源 #

自:4.9.0.0

实例详细信息

定义于全球总部。泛型

MonadPlus系列f=>MonadPlus系列(中高音f) 来源 #

自:4.8.0.0

实例详细信息

定义于数据。半群。内部

MonadPlus系列f=>MonadPlus系列(阿普f) 来源 #

自:4.12.0.0

实例详细信息

定义于数据。单体

MonadPlus系列m=>MonadPlus系列(克莱斯利(百万美元) 来源 #

自:4.14.0.0

实例详细信息

定义于控制。箭头

(MonadPlus系列f、,MonadPlus系列g) =>MonadPlus系列(f):*:g) 来源 #

自:4.9.0.0

实例详细信息

定义于全球总部。泛型

方法

mzero(零点)::(f:*:g) 一个来源 #

mplus(mplus)::(f:*:g) a->(f:*:g) a->(f:*:g) 一个来源 #

(MonadPlus系列f、,MonadPlus系列g) =>MonadPlus系列(产品f g) 来源 #

自:4.9.0.0

实例详细信息

定义于数据。仿真器。产品

方法

mzero(零点)::产品f g a公司来源 #

mplus(mplus)::产品f g a->产品f g a->产品f g a公司来源 #

MonadPlus系列f=>MonadPlus系列(M1米i c f) 来源 #

自:4.9.0.0

实例详细信息

定义于全球总部。泛型

方法

mzero(零点)::M1米国际货币基金组织来源 #

mplus(mplus)::M1米i c f a->M1米i c f a->M1米国际货币基金组织来源 #

功能

命名约定

此库中的函数使用以下命名约定:

  • 一个后缀'M(M)“总是代表Kleisli类别中的函数:monad类型构造函数添加到函数结果中(模数咖喱),别无他法。例如,
过滤器::(a->Bool)->[a]->[a]过滤器m::(单子m)=>(a->m Bool)->[a]->m[a]
  • 后缀_'将结果类型从更改为(百万)(米()).因此,例如:
顺序::莫纳德m=>[ma]->m[a]序列_::单子m=>[ma]->m()
  • 前缀''将现有函数推广为一元形式。因此,例如:
过滤器::(a->Bool)->[a]->[a]mfilter::MonadPlus m=>(a->Bool)->ma->ma

基本莫纳德功能

地图M:: (可穿越的t、,莫纳德m) =>(a->m b)->t a->m(t b)来源 #

将结构的每个元素映射到一个单元动作,评估这些操作从左到右,并收集结果。对于忽略结果的版本请参见地图M_.

地图M_:: (可折叠的t、,莫纳德m) =>(a->m b)->t a->m()来源 #

将结构的每个元素映射到一个单子动作,计算这些操作从左到右,忽略结果。对于不忽略结果的版本请参见地图M.

从基础4.8.0.0开始,地图管理_只是导线_,专门用于莫纳德.

对于M:: (可穿越的t、,莫纳德m) =>t a->(a->m b)->m(t b)来源 #

对于M地图M争论不休。对于以下版本忽略结果请参见用于M_.

对于M_:: (可折叠的t、,莫纳德m) =>t a->(a->m b)->m()来源 #

对于M_地图M_争论不休。对于以下版本不忽略结果对于M.

从基础4.8.0.0开始,用于M_只是的_,专门用于莫纳德.

序列:: (可穿越的t、,莫纳德m) =>t(ma)->m(ta)来源 #

从左到右评估结构中的每个单子动作好的,然后收集结果。对于忽略结果参见顺序_.

顺序_:: (可折叠的t、,莫纳德m) =>t(m a)->m()来源 #

从左到右评估结构中的每个单子动作,忽略结果。对于不忽略结果参见序列.

从基础4.8.0.0开始,顺序_只是序列A_,专业莫纳德.

(=<<)::莫纳德m=>(a->mb)->ma->mb中缀1 来源 #

等同于>>=,但参数互换。

(>=>)::莫纳德m=>(a->mb)->(b->mc)->a->mc中缀1 来源 #

Kleisli箭的左右组合。

'(磅>=>cs)一个'可以理解为表达

做b<-bs acs b类

(<=<)::莫纳德m=>(b->m c)->(a->m b)->a->m c中缀1 来源 #

Kleisli箭从右向左组合。(>=>),带参数轻弹。

注意这个操作符如何类似于函数组合(.)以下为:

(.)::(b->c)->(a->b)->a->c(<=<)::单子m=>(b->mc)->(a->mb)->a->mc

永远::适用f=>f a->f b来源 #

无限期重复一个动作。

使用应用程序Do: '永远作为'可以理解为伪-表达

作为作为..

具有作为重复。

示例

展开

的常见用法永远处理来自网络套接字的输入,把手s、 和频道(例如。MVar(MVar)).

例如,以下是我们如何实现回声服务器,使用永远两者都用于侦听网络套接字上的客户端连接以及在客户端连接句柄上回显客户端输入:

echoServer::套接字->IO()echoServer套接字=永远$做客户端<-接受套接字fork最终(echo客户端)(\_->h关闭客户端)哪里echo::句柄->IO()echo客户端=永远$hGetLine客户端>>=hPutStrLn客户端

无效::Functor函数f=>f a->f()来源 #

无效价值丢弃或忽略评估结果,例如作为的返回值IO(输入输出)行动。

使用应用Do: '无效作为'可以理解为表达

作为纯()

带有推断Functor(仿真器)约束。

示例

展开

替换也许 吧 国际带装置:

>>>无效无任何内容没有什么>>>空(只有3个)仅()

替换要么 国际 国际使用单位,导致要么 国际 ()以下为:

>>>无效(左侧8675309)左8675309>>>无效(右侧8675309)右侧()

用单位替换列表中的每个元素:

>>>空隙[1,2,3][(),(),()]

将一对中的第二个元素替换为单元:

>>>空隙(1,2)(1,())

放弃IO(输入输出)操作:

>>>mapM打印[1,2]12[(),()]>>>无效$mapM打印[1,2]12

列表函数概述

参加::莫纳德m=>m(毫安)->毫安来源 #

这个参加函数是传统的monad连接操作符。用于移除一层一元结构,突出其将参数绑定到外部级别。

'参加平衡计分卡'可以理解为表达

do bs<-bss英国标准

示例

展开

的常见用法参加就是运行IO(输入输出)计算返回自一个STM公司交易,自STM公司交易无法执行IO(输入输出)直接。回想一下

原子地::STM a->IO a

用于运行STM公司事务原子化。所以,通过专门化的类型原子地参加

原子地::STM(IO b)->IO(IOb)参加::IO(IO b)->IO b

我们可以将它们组合为

参加.原子地::STM(IO b)->IO b

运行STM公司交易和IO(输入输出)行动返回。

毫秒:: (可折叠的t、,MonadPlus系列m) =>t(毫安)->毫安来源 #

动作集合的总和,概括凹入.从基础4.8.0.0开始,毫秒只是阿斯姆,专门用于MonadPlus系列.

m过滤器::MonadPlus系列m=>(a->布尔)->毫安->毫安来源 #

直接MonadPlus系列等效于滤波器.

示例

展开

这个滤波器函数只是m过滤器专门用于列表monad:

滤波器= (m过滤器::(a->Bool)->[a]->[a])

使用的示例m过滤器使用也许 吧单子:

>>>mfilter奇数(仅1)只有1个>>>mfilter奇数(仅2)没有什么

过滤器M::适用m=>(a->m布尔)->[a]->m[a]来源 #

这概括了基于列表的滤波器功能。

映射并解压缩M::适用m=>(a->m(b,c))->[a]->m([b],[c])来源 #

这个映射并解压缩M函数将其第一个参数映射到列表上,返回结果是一对列表。此功能主要用于复杂的数据结构或状态单体。

带M的拉链::适用m=>(a->b->mc)->[a]->[b]->m[c]来源 #

这个带M的拉链函数泛化拉链任意应用函子。

带M的拉链_::适用m=>(a->b->mc)->[a]->[b]->m()来源 #

带M的拉链_是的扩展带M的拉链忽略了最终结果。

foldM(折叠M):: (可折叠的t、,莫纳德m) =>(b->a->mb)->b->ta->mb来源 #

这个foldM(折叠M)函数类似于折叠,但其结果是封装在单子里。请注意折叠M从左到右工作列表参数。这可能是一个问题(>>)和折叠的函数“不是可交换的。

foldM f a1[x1,x2,…,xm]==a2<-f a1 x1a3<-f a2x2...f上午xm

如果需要从右向左评估,则应反转输入列表。

注:折叠M与相同foldlM(折叠M)

foldM(折叠M)_:: (可折叠的t、,莫纳德m) =>(b->a->mb)->b->ta->m()来源 #

喜欢foldM(折叠M),但丢弃结果。

复制品M::适用m=>国际->毫安->毫安来源 #

复制品Mn行动执行操作n个次,收集结果。

使用应用Do: '复制品M5作为'可以理解为这个表达

执行a1<-asa2<-asa3<-作为a4<-asa5<-as纯[a1,a2,a3,a4,a5]

请注意适用约束。

复制品M_::适用m=>国际->毫安->米()来源 #

喜欢复制品M,但丢弃结果。

一元表达式的条件执行

警卫::备选方案f=>布尔->f()来源 #

的条件故障备选方案计算。定义者

保护True=纯净的()守卫假=空的

示例

展开

的常见用法警卫在中包含有条件地发出错误信号错误单体并有条件地拒绝备选方案-基于解析器。

作为在错误单子中发出错误信号的示例也许 吧,考虑一个安全划分函数safeDiv x y(安全分区x y)那就回来了没有什么当分母为零,并且只是(x`div`年)否则。例如:

>>>安全分区4 0没有什么>>>安全分区4 2只有2个

定义安全潜水器使用防护装置,但不使用警卫以下为:

safeDiv::Int->Int->可能IntsafeDiv x y | y/=0=仅(x`div`y)|否则=无

定义安全潜水器使用警卫莫纳德 -注释:

safeDiv::Int->Int->可能IntsafeDiv x y=执行防护装置(y/=0)return(x`div`y)

什么时候::适用f=>布尔->f()->f()来源 #

有条件执行适用表达。例如,

调试时(putStrLn“调试”)

将输出字符串调试如果布尔值调试真的,否则什么也不做。

除非::适用f=>布尔->f()->f()来源 #

的反面什么时候.

单体起重操作员

提升M::莫纳德m=>(a1->r)->m a1->m r来源 #

将函数升级为monad。

提升M2::莫纳德m=>(a1->a2->r)->m a1->m a2->m r来源 #

将函数升级为单子函数,扫描中的单子参数从左到右。例如,

提升M2(+)[0,1][0,2]=[0,2,1,3]liftM2(+)(仅1)无=无

提升M3::莫纳德m=>(a1->a2->a3->r)->m a1->m a2->m a3->m r来源 #

将函数升级为单子函数,扫描中的单子参数从左到右(参见。提升M2).

升降机M4::莫纳德m=>(a1->a2->a3->a4->r)->m a1->m a2->m a3->m a4->m r来源 #

将函数升级为单子函数,扫描中的单子参数从左到右(参见。提升M2).

提升M5::莫纳德m=>(a1->a2->a3->a4->a5->r)->m a1->m a2->m a3->m a4->m a5->m r来源 #

将函数升级为单子函数,扫描中的单子参数从左到右(参见。提升M2).

应用程序::莫纳德m=>m(a->b)->m a->m b来源 #

在许多情况下升降机M操作可以替换为使用应用程序,促进功能应用。

return f`ap`x1`ap``ap `xn

等于

提升Mn f x1 x2。。。x个

严格的一元函数

(<$!>)::莫纳德m=>(a->b)->m a->m b中缀4 来源 #

的严格版本<$>.

自:4.8.0.0