`
tangtong
  • 浏览: 62472 次
  • 来自: ...
社区版块
存档分类
最新评论

抱怨 :: All about Monad

 
阅读更多

代码写得太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 一开始又是那个恶心的代码。。

 

全文没有一张图,难道没有听过一句话,“一图胜千言”!!!

 

看得恶心,恶心,恶心

看得不懂,不懂,不懂

分享到:
评论
2 楼 linkerlin 2010-04-21  
Monad就这样子的,永久了命令式语言的人,接触Monad都要吐一段时间的。
1 楼 leeleo 2009-04-04  
唉,习惯就好了~~我刚开始上班的时候也是这样,现在就习惯了,心情好的话,就给他们改一下,心情不好,就放着~~

相关推荐

    monad:monad-功能库

    monad-一个功能强大的python包 笔记 该项目已被Hymn( )取代。 受Python语法的限制,无法完全实现do表示法,最接近的是生成器函数上的do装饰器,使用yield as &lt;- ,感觉就像黑魔法。 这就是为什么我停止在...

    grokking-monad:购买https:gum.cogrokking-monad在线阅读

    Monad是函数式编程中的一个核心概念,特别是在Haskell和Scala这样的语言中,它的重要性不言而喻。"Grokking Monad"很可能是一本旨在帮助程序员深入理解Monad的书籍或者在线资源,通过购买链接&lt;https://gum.co/...

    ppx_monad:OCaml 的 Monad 语法扩展

    ppx_monad 是 OCaml 的 monad 语法扩展,它提供了两种主要的 monad 语法:干净但不完整的 Haskell 风格的 monad 语法和冗长但完整的 let monad 语法。 Haskell 风格的 monad 语法 要使用此语法,您需要使用[%monad ...

    racket-monad:球拍的单子(!)

    Racket 中的 Monad,一种动态类型语言这个库展示了一种以动态类型语言处理 monad 的方法,包括一种实现返回类型多态的方法。 它开始是一个实验,记录在,查看动机和与其他方法的比较等。 代码使用的功能代替 Haskell...

    平行哲学与智能科学:从莱布尼茨的Monad到区块链之DAO.pdf

    平行哲学与智能科学:从莱布尼茨的Monad到区块链之DAO 本文从新的角度回顾科学和哲学的本源,认为需要以新的思想发展人工智能和智能技术及其相应的智慧社会。围绕卡尔•波普尔的三个交织世界的现实观,提出面向描述...

    p5-Data-Monad:Perl 5中monad的实现

    Data :: Monad-Perl的monad的实现 描述 是Perl的monad的实现。 该模块标记为EXPERIMENTAL 。 API可能会更改,恕不另行通知。 作者 hiratara 也可以看看 执照 该库是免费软件。 您可以按照与Perl本身相同的条款重新...

    TransformersStepByStep:monad 转换器教程

    Monad转换器(Monad Transformers)是Monad的一个扩展,它允许我们组合不同的Monad,以实现更复杂的控制流和数据处理。这个名为"TransformersStepByStep: monad 转换器教程"的资源,很可能是为了帮助程序员深入理解...

    monad-ts:Monad-ts是一个小型库,实现了一些关键的monad以及将其链接到JavaScript和TypeScript中的流(管道)中的方法

    Monad-ts是一个小型库,实现了一些关键的monad以及将它们链接到JavaScript和Typescript的流(管道)中的方法。 兼容Angular 2+ 。 。 内容 介绍 所有单子 也许 列表 状态 附加工具(类和功能) 异步流 流 投 克隆...

    monad:将单子语言翻译成逻辑

    在标题“monad:将单子语言翻译成逻辑”中,我们可以理解为探讨如何利用Monad来构建和解释一种语言,并将其映射到逻辑表达上。这涉及到将具有Monad特性的代码转换为形式逻辑系统中的等价表达,以便于理解和验证。 ...

    mtl:Monad变压器库

    Monad Transformer则是将一个Monad嵌入到另一个Monad中,形成一个新的Monad,这样就可以在不破坏纯性的前提下,将多个Monad的功能结合在一起。`mtl`库提供了许多常见的Monad Transformer实现,如`MaybeT`、`StateT`...

    qt-continuation-monad:C++ 中 continuation monad 的基本但有效的实现。 Qt 可以使用它来缓解回调地狱

    C++ 中的 Haskell 延续 monad C++ 中 continuation monad 的基本但有效的实现。 Qt 可以使用它来缓解回调地狱 特色: boost::optional 、 Continuation和一些 Qt 数据类型的 Monad 实现。 一些基本的一元函数,...

    task-monad:用于研究任务monad的仓库

    Task Monad是一种在编程中处理异步操作的概念,尤其在JavaScript这样的单线程环境中,它能够帮助我们更好地组织和管理异步代码。这个“task-monad”仓库显然专注于探索和实现Task Monad的概念,以便于开发者理解和...

    函数式变成Monad简介

    Monad入门,简介。英文版。介绍什么是Monad,以及如何使用Monad,还有如果自己定义Monad。

    关于 Swift Monad .zip

    Swift Monad 是一种编程概念,源于函数式编程语言,如 Haskell 和 Scala,被引入到苹果的 Swift 语言中,用于处理可变性和副作用。Monad 是一个抽象的概念,它提供了一种结构化的方式来组合操作,特别是在处理可能...

    movie-monad:由Haskell制作的免费且易于使用的视频播放器

    "movie-monad" 是一个专为IT爱好者和Haskell编程语言粉丝设计的免费、开源视频播放器项目。这款播放器以其简洁易用的界面和强大的功能赢得了用户的青睐。在本文中,我们将深入探讨movie-monad的核心特点、技术栈以及...

    monad.js:nodejs 的简单 monad 类型

    monad.js 为 NodeJS(或任何 CommonJS 实现)提供了简单的 monadic 数据类型。 也许 也许代表一个可能存在也可能不存在的值。 当一个值或函数的结果可能会或可能不会产生有意义的东西时,这是很自然的。 传统上, ...

    ether:Monad变形金刚和职业

    2. **Monad组合器(Monad Combinators)**:这些是用于操作Monad的实用函数,如`lift`系列函数,它们帮助在不同Monad之间转换和组合计算。 3. **标记的Monad转换器(Tagged Monad Transformers)**:这是一种特殊的...

    node-monad:使用和声生成器的 Node.js Monads

    使用和声生成器的 Node.js 的 Monad do-notation。 这是一个可能的 monad 的例子: var monad = require ( 'node-monad' ) . monad ; var NOTHING = { } ; var maybe = monad ( function unit ( error , value ) ...

    monad-memo:记忆monad转换器

    Monad-Memo库是Haskell编程语言中用于实现记忆化(Memoization)的一个工具,它主要应用于函数式编程。记忆化是一种优化技术,通过缓存函数的计算结果来避免重复计算,提升性能。在Haskell这样的纯函数式语言中,...

    Freasy-Monad:使用具有一流Intellij支持的Scala宏轻松创建Free Monad的简便方法

    **Free Monad**是一种在函数式编程中广泛使用的抽象,它允许我们定义操作的语义而不涉及具体的执行方式。在Scala中,Free Monad尤其适合构建领域特定语言(DSL),因为它们可以提供一种干净、抽象的方式去描述计算...

Global site tag (gtag.js) - Google Analytics