gpt4 book ai didi

haskell - 概括 `fold` 或如何同时执行 `fold` 和 `map`

转载 作者:行者123 更新时间:2023-12-04 10:41:45 26 4
gpt4 key购买 nike

(按标题道歉,我不能做得更好)

我的问题是找到一些通用的结构或“标准”函数来执行下一件事:

xmap :: (a -> b) -> f a -> g b

然后,我们不仅可以映射元素,还可以映射整个结构。

一些(不是真实的)例子
xmap id myBinaryTree :: [a]

目前,我必须做一个显式结构转换器(典型的 fromListtoList )然后
toList . fmap id   -- if source struct has map
fmap id . fromList -- if destination struct has map

(执行 toStructfromStruct 我使用 fold )。

存在某种概括的方法 to/ from结构? (应该)
是否存在该函数( xmap )?

谢谢!! :)

最佳答案

fg是仿函数,一个 natural transformation是您正在寻找的(另请参阅 You Could Have Defined Natural Transformations )。所以像这样的转变

f :~> g = forall a. f a -> g a 

需要创建 xmap,然后只是
xmap :: (a -> b) -> (f :~> g) -> (f a -> g b)
xmap f n = map f . n

您仍然需要定义 (f :~> g) 的类型,但没有通用的方法来做到这一点。

关于haskell - 概括 `fold` 或如何同时执行 `fold` 和 `map`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17834918/

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