【发布时间】:2014-10-30 00:15:03
【问题描述】:
我可以这样写:
f :: [Int] -> [Int]
f x = 0:(map (+1) x)
g :: [Int] -> [Int]
g x = map (*2) x
a = f b
b = g a
main = print $ take 5 a
一切都很好(ideone)。
但是,假设我希望 g 做一些比乘以 2 更复杂的事情,比如向用户询问一个数字并添加它,如下所示:
g2 :: [Int] -> IO [Int]
g2 = mapM (\x -> getLine >>= (return . (+x) . read))
那我该怎么打结呢?
澄清:
基本上,我希望f 中的Ints 列表成为g2 的输入,g2 中的Ints 列表成为f 的输入。
【问题讨论】:
-
你可能想从
Control.Monad.Fix看mfix。 -
您能否尝试更具体地说明您要究竟做什么?
-
与示例完全相同,只是将
g替换为g2。
标签: haskell