如何将函数的输出作为另一个函数的输入传递.
例如,我有这两个功能
collatz :: (Integral a) => a -> [a]
collatz 1 = [1]
collatz n
|even n = n:collatz (n `div` 2)
|odd n = n:collatz (n*3 + 1)
Run Code Online (Sandbox Code Playgroud)
而我的另一个功能
length' [] = 0
length' (x:xs) = 1 + length' xs
Run Code Online (Sandbox Code Playgroud)
我想计算列表的长度,这是从我的collatz函数输出的.
最后我想完全计算这个
numLongChains :: Int
numLongChains = length (filter isLong (map collatz [1..100]))
where isLong xs = length xs > 15
Run Code Online (Sandbox Code Playgroud)
但一步一步.
为什么这段代码不起作用?
xMal 0 _ = return ()
xMal n text =
do
text
xMal (n-1) text
main = xMal (putStrLn t <- getLine) (n <- readLn)
Run Code Online (Sandbox Code Playgroud)
我希望能够得到一个数字和字符串作为输入.