繁体   English   中英

Haskell-折叠多态函数吗?

[英]Haskell - Is Fold polymorphic function?

函数是多态的 ,如果它适用于多种不同类型的 -因此,函数是单态的 ,如果它仅适用于一个类型 wiki.haskell

例如, map是多态的。

map :: (a -> b) -> [a] -> [b]

但是,函数( foo )具有单态类型。 它只会接受Int列表:

foo :: (Int -> Int) -> [Int] -> [Int]
foo = map

foldr在Haskell:

foldr f z []     = z 
foldr f z (x:xs) = f x (foldr f z xs) 

Fold多态函数也是吗?

您可以通过GHCi询问Haskell本身:

Prelude> :t foldr
foldr :: Foldable t => (a -> b -> b) -> b -> t a -> b

如您所见,它完全由参数多态类型( abt ,其中tFoldable )定义。

一般来说, fold是一种允许遍历不同集合元素的模式。 对于foldr ,它适用于任何类型的列表:

foldr :: (a -> b -> b) -> b -> [a] -> b

所以从这个意义上讲,它是一个多态函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM