gpt4 book ai didi

Haskell:函数组合刚刚损坏了我的大脑

转载 作者:行者123 更新时间:2023-12-03 15:05:54 25 4
gpt4 key购买 nike

如果

*Main> :t concatMap
concatMap :: (a -> [b]) -> [a] -> [b]


*Main> :t replicate
replicate :: Int -> a -> [a]

那么这是如何工作的
*Main> :t concatMap . replicate
concatMap . replicate :: Int -> [b] -> [b]

给定:
*Main> :t (.)
(.) :: (b -> c) -> (a -> b) -> a -> c

?

我的意思是,我对函数组合的理解是 replicate应该返回任何 concatMap期望作为 (.) 的参数去工作。但事实并非如此。那么问题是什么?

最佳答案

如果您在签名中添加括号然后将它们排列起来,它可能会帮助您了解发生了什么:

replicate :: Int -> (a -> [a])
concatMap :: (a -> [b]) -> ([a] -> [b])

现在应该很明显 replicate 的输出适合 concatMap 的输入如果我们统一 ba ,在这种情况下,合成的输出类型为 [b] -> [b] .

关于Haskell:函数组合刚刚损坏了我的大脑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11803550/

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