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

抱怨 :: 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  
唉,习惯就好了~~我刚开始上班的时候也是这样,现在就习惯了,心情好的话,就给他们改一下,心情不好,就放着~~

相关推荐

Global site tag (gtag.js) - Google Analytics