gpt4 book ai didi

haskell - 将函数的输出作为 Haskell 中另一个函数的输入传递

转载 作者:行者123 更新时间:2023-12-01 09:43:39 24 4
gpt4 key购买 nike

如何将一个函数的输出作为另一个函数的输入传递。

例如我有这两个功能

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

我想计算一个列表的长度,它是我的 collat​​z 函数的输出。

最后我要完全计算这个

numLongChains :: Int  
numLongChains = length (filter isLong (map collatz [1..100]))
where isLong xs = length xs > 15

但是一步一步来。

最佳答案

你说的是function composition :

-- assuming signature length' :: [a] -> Int   
composed :: (Integral a) => a -> Int
composed = length' . collatz

我不确定你所说的“一步一步”是什么意思,但对于你的第二个问题,应该是:

numLongChains :: (Integral a) => [a] -> Int
numLongChains = length' . (filter isLong) . (map collatz)
where isLong xs = length' xs > 15

我将其设为一元函数,因此它可以处理任何列表,而不仅仅是 [1..100]

关于haskell - 将函数的输出作为 Haskell 中另一个函数的输入传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53857224/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com