{-#语言CPP#-}
模块 GF.数据。错误消息 哪里
进口 控制。莫纳德 (MonadPlus系列(..),应用程序)
进口 控制。适用
进口 有资格的 控制。莫纳德。失败 作为 失败
数据 错误 一 = 好 啊 一 | 坏 字符串
衍生 (ReadPrec[错误a]ReadPrec(错误a)Int->ReadS(错误a)读取S[错误a](Int->ReadS(错误a))->读数S[Err a]->ReadPrec(错误a)->ReadPrec[错误a]->读取(错误a)for all a.读取a=>ReadPrec[Err a]对于所有a.读取a=>ReadPrec(错误a)对于所有a.读取a=>Int->读取S(Err a)对于所有a.读取a=>读取S[Err a]对于所有a。(Int->ReadS a)->ReadS[a]->ReadPrec a->ReadPrec[a]->读取readListPrec::ReadPrec[错误a]$creadListPrec::for all a.读取a=>ReadPrec[Err a]readPrec::readPrec(错误a)$creadPrec::for all a.读取a=>ReadPrec(错误a)readList::ReadS[错误a]$creadList::for all a.读取a=>读取S[Err a]readsPrec::Int->ReadS(错误a)$creadsPrec::for all a.读取a=>Int->ReadS(错误a)阅读, 内部->错误->显示[Err a]->显示错误a->字符串(内部->错误->显示)->(错误a->字符串)->([Err a]->显示S)->显示(错误a)对于所有a.显示a=>Int->Err a->ShowS对于所有a.显示a=>[Err a]->显示Sfor all a.显示a=>Err a->String对于所有a。(Int->a->ShowS)->(a->String)->([a]->ShowS)->显示showList::[Err a]->显示$cshowList::for all a.显示a=>[Err a]->显示Sshow::Err a->字符串$cs显示::for all a.显示a=>Err a->StringshowsPrec::Int->错误a->ShowS$cshowsPrec::for all a.显示a=>Int->Err-a->ShowS显示, 错误a->Err-a->Bool(Err a->Err a->Bool)->(Err a->Err a->Bool)->方程(Err a)对于所有a.方程a=>错误a->错误a->布尔对于所有a.(a->a->Bool)->(a->a->Bool)->等式a/=::错误a->错误a->布尔$c/=::对于所有a.等式a=>错误a->错误a->Bool==::错误a->Err-a->Bool$c==::对于所有a.等式a=>错误a->错误a->Bool等式)
错误 时间: (字符串 -> b条) -> (一 -> b条) -> 错误 一 -> b条
错误::(字符串->b)->(a->b)->错误a->b错误 字符串->bd日 a->b(f) 错误ae(电子) = 案例 错误ae(电子) 属于
好 啊 一一 -> a->b(f) 一一
坏 字符串秒 -> 字符串->bd日 字符串秒
来自Err 时间: 一 -> 错误 一 -> 一
来自错误::a->Err-a->a来自Err 一一 = (字符串->a)->(a->a)->错误a->a对于所有b a.(字符串->b)->(a->b)->错误a->b错误 (a->字符串->a对于所有a b.a->b->a常数 一一) a->a对于所有a.a->a身份证件
实例 莫纳德 错误 哪里
返回::a->错误a返回 = a->错误a对于所有a.a->Err a好 啊
好 啊 一一 >>=::错误a->(a->错误b)->错误b>>= a->错误b(f) = a->错误b(f) 一一
坏 字符串秒 >>= a->错误b(f) = 字符串->错误b对于所有a.字符串->错误a坏 字符串秒#如果!(最小版本基础(4,13,0))
失败 = 失败。失败#结尾
实例 失败。Monad失败 错误 哪里
失败::字符串->错误a失败 = 字符串->错误a对于所有a.字符串->错误a坏
实例 Functor(仿真器) 错误 哪里
fmap::(a->b)->错误a->Err b功能性维修计划 a->b(f) (好 啊 一一) = b->错误b对于所有a.a->Err a好 啊 (a->b(f) 一一)
功能性维修计划 a->b(f) (坏 字符串秒) = 字符串->错误b对于所有a.字符串->错误a坏 字符串秒
实例 适用 错误 哪里
纯::a->错误a纯净的 = a->错误a对于所有(m::*->*)a.Monad m=>a->ma返回
:错误(a->b)->错误a->Err b(<*>) = 错误(a->b)->错误a->Err b对于所有(m::*->*)a b.单体m=>m(a->b)->m a->m b应用程序
实例 MonadPlus系列 错误 哪里
mzero::错误amzero(零点) = 字符串->错误a对于所有a.字符串->错误a坏 字符串“错误(未给出原因)”
mplus::Err a->Err a->Err amplus(mplus) (好 啊 一一) 错误a_ = a->错误a对于所有a.a->Err a好 啊 一一
mplus(mplus) (坏 字符串秒) 错误ab条 = 错误ab条
实例 备选方案 错误 哪里
空::错误a空的 = 错误a对于所有(m::*->*)a.MonadPlus m=>m amzero(零点)
<|>::Err a->Err a->Err a(<|>) = 错误a->Err-a->Err a对于所有(m::*->*)a.MonadPlus m=>ma->ma->mamplus(mplus)