【发布时间】:2019-05-20 07:10:50
【问题描述】:
如何将一个函数的输出作为另一个函数的输入传递。
例如我有这两个功能
collatz :: (Integral a) => a -> [a]
collatz 1 = [1]
collatz n
|even n = n:collatz (n `div` 2)
|odd n = n:collatz (n*3 + 1)
还有我的另一个功能
length' [] = 0
length' (x:xs) = 1 + length' xs
我想计算一个列表的长度,它是我的 collatz 函数的输出。
最后我想完全计算这个
numLongChains :: Int
numLongChains = length (filter isLong (map collatz [1..100]))
where isLong xs = length xs > 15
但是一步一步来。
【问题讨论】:
-
什么是
chain?numLongChains与计算 collatz 函数输出的列表的长度有什么关系?您似乎在描述两个不同的问题。你想回答哪一个? -
对不起,这是一个错误,我的链是我的 collatz 函数。我准备好了。首先我想计算一个 collanz 函数的输出长度。
-
我不明白。你不喜欢你已有的代码吗?