【发布时间】:2016-10-18 21:12:06
【问题描述】:
我正试图了解序列函数。我认为如果我把它写成一个递归函数可能会有所帮助,但考虑到它是一个单子表达式,我发现它有点难以转换为递归函数,所以我有点不知所措。我的意思是你如何处理 return (x:xs)?换句话说,我想编写没有 foldr 的函数。我在下面包含了两个定义:
sequence _ = foldr k (return [])
where
k m m' = do { x <- m; xs <- m'; return (x:xs) }
sequence' _ = foldr k (return [])
where
k m m' = m >>=
(\fstr -> m'>>=
(\rstr -> return (fstr:rstr)))
【问题讨论】:
-
不清楚你在问什么。
-
没有foldr的函数怎么写?
-
没有我就不要写函数。 :(
标签: haskell