当前位置: 代码迷 >> 综合 >> Haskell 学习笔记-18:sequence、mapM、forever 的实现
  详细解决方案

Haskell 学习笔记-18:sequence、mapM、forever 的实现

热度:58   发布时间:2023-12-12 16:26:44.0

编写函数,很容易混淆返回类型。如果函数有副作用,必须用 return 返回类型。从有副作用的函数”取值“,必须用 <- 。另外 return 后面如果有复杂表达式,还是用括号扩起来吧,因为 return 和后面符号结合的优先级很高,不小心就出现符号结合顺序的错误。

sequence' [] = return [] sequence' (x:xs) = do a <- xb <- sequence' xsreturn (a : b)mapM' :: (a -> (IO ())) -> [a] -> (IO ())
mapM' x [] = return () mapM' x (y:ys) = dox ymapM' x ysreturn ()forever' x = do xforever' x

亲自编写这些库函数有两个好处,一是对这些函数的作用理解更深,其次,对于理解 Haskell 语法、语义非常有帮助。

  相关解决方案