Haskell中如何实现对任意深度嵌套列表的通用映射函数?
通用嵌套列表映射函数的实现
我们可以通过组合map函数来处理不同嵌套深度的列表映射,对应的类型签名如下:
map :: (a -> b) -> [a] -> [b] (map.map) :: (a -> b) -> [[a]] -> [[b]] (map.map.map) :: (a -> b) -> [[[a]]] -> [[[b]]]
有没有办法编写一个单一函数来处理所有这类嵌套情况?当然可以,比如Uiua语言中的∵ each函数就能对任意秩的数组实现这种通用映射操作。这类函数在数组语言里被称为渗透函数(pervasive functions)——它们会自动穿透嵌套结构,把操作直接应用到最内层元素上,无需手动组合多层映射。
内容的提问来源于stack exchange,提问作者Brendan Langfield
相关产品推荐
相关产品推荐

