代码写得太BT,恶心死了
例:
convert :: String -> String
convert s = let (Right str) = do { n <- parseHex s; toString n } `catchError` printError
in str
where printError e = return $ "At index " ++ (show (location e)) ++ ":" ++ (reason e)
修改版:
convert :: String -> String
convert s = case (parseHex s >>= toString) of
Left e -> "At index " ++ (show (location e)) ++ ":" ++ (reason e)
Right str -> str
(见Error Monad, example12)
还有那个Count Monad,开始几遍硬是没有看懂,后来看看wikibook上面的解析才明白啥意思,有必要这么复杂吗,用if, case, guard 等都可以简单的处理。。没明白这里到底有什么优势。CPS可以控制流程,但是如果代码处理的好,也不会出现这种极端情况,有如goto之于命令式语言。
Monad Transformers 一开始又是那个恶心的代码。。
全文没有一张图,难道没有听过一句话,“一图胜千言”!!!
看得恶心,恶心,恶心
看得不懂,不懂,不懂
分享到:
相关推荐
monad-一个功能强大的python包 笔记 该项目已被Hymn( )取代。 受Python语法的限制,无法完全实现do表示法,最接近的是生成器函数上的do装饰器,使用yield as <- ,感觉就像黑魔法。 这就是为什么我停止在...
grokking-monad:购买https:gum.cogrokking-monad在线阅读
mtl:Monad变压器库
task-monad:用于研究任务monad的仓库
ppx_monad 是 OCaml 的 monad 语法扩展,它提供了两种主要的 monad 语法:干净但不完整的 Haskell 风格的 monad 语法和冗长但完整的 let monad 语法。 Haskell 风格的 monad 语法 要使用此语法,您需要使用[%monad ...
Racket 中的 Monad,一种动态类型语言这个库展示了一种以动态类型语言处理 monad 的方法,包括一种实现返回类型多态的方法。 它开始是一个实验,记录在,查看动机和与其他方法的比较等。 代码使用的功能代替 Haskell...
movie-monad:由Haskell制作的免费且易于使用的视频播放器
Data :: Monad-Perl的monad的实现 描述 是Perl的monad的实现。 该模块标记为EXPERIMENTAL 。 API可能会更改,恕不另行通知。 作者 hiratara 也可以看看 执照 该库是免费软件。 您可以按照与Perl本身相同的条款重新...
Monad-ts是一个小型库,实现了一些关键的monad以及将它们链接到JavaScript和Typescript的流(管道)中的方法。 兼容Angular 2+ 。 。 内容 介绍 所有单子 也许 列表 状态 附加工具(类和功能) 异步流 流 投 克隆...
可扩展效果:可扩展效果:Monad变形金刚的替代品
monad-memo:记忆monad转换器
monad:将单子语言翻译成逻辑
C++ 中的 Haskell 延续 monad C++ 中 continuation monad 的基本但有效的实现。 Qt 可以使用它来缓解回调地狱 特色: boost::optional 、 Continuation和一些 Qt 数据类型的 Monad 实现。 一些基本的一元函数,...
Monad入门,简介。英文版。介绍什么是Monad,以及如何使用Monad,还有如果自己定义Monad。
monad.js 为 NodeJS(或任何 CommonJS 实现)提供了简单的 monadic 数据类型。 也许 也许代表一个可能存在也可能不存在的值。 当一个值或函数的结果可能会或可能不会产生有意义的东西时,这是很自然的。 传统上, ...
Freasy-Monad:使用具有一流Intellij支持的Scala宏轻松创建Free Monad的简便方法
使用和声生成器的 Node.js 的 Monad do-notation。 这是一个可能的 monad 的例子: var monad = require ( 'node-monad' ) . monad ; var NOTHING = { } ; var maybe = monad ( function unit ( error , value ) ...
data.monad描述javascript monad结构。类型签名界面。 interface M < T> { // return function unit < T> (value: T): M < T> { } // >>= function bind < T> (instance: M < T> , transform: (value: T) = > M < U>...
图形.WebGL 一个monad包装原始的WebGL方法和常见的交互集,提供对WebGL上下文的访问以及错误检查和处理。 有关所有可用类型和方法,请参阅。意图一个好的库应该教育用户有关主题,并帮助他们编写可读、无错误的...
RxJava 的 Observable 可以是类似 Monad 的 List 和类似 Applicative functor 的 ZipList。 见 。 // observable monad object by standard flatMapping. // this provides List monad like semantics. ...