gpt4 book ai didi

haskell - 使用foldr实现zip

转载 作者:行者123 更新时间:2023-12-02 11:36:44 25 4
gpt4 key购买 nike

我目前正在阅读 Real World Haskell 的第 4 章,我正在努力理解 implementing foldl in terms of foldr .

(这是他们的代码:)

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

myFoldl f z xs = foldr step id xs z
where step x g a = g (f a x)

我想我会尝试使用相同的技术来实现zip,但我似乎没有取得任何进展。这可能吗?

最佳答案

zip2 xs ys = foldr step done xs ys
where done ys = []
step x zipsfn [] = []
step x zipsfn (y:ys) = (x, y) : (zipsfn ys)

这是如何工作的:(foldr 步骤完成 xs) 返回一个消耗的函数是的;所以我们沿着 xs 列表构建一个嵌套组合每个函数都将应用于 ys 的相应部分。

如何想出它:我从总体想法开始(来自类似的之前见过的例子),写道

zip2 xs ys = foldr step done xs ys

然后依次填写以下每一行所需要的内容是为了使类型和值正确。这是最容易的首先考虑最简单的情况,然后再考虑更困难的情况。

第一行可以更简单地写为

zip2 = foldr step done

正如马蒂亚斯特所展示的那样。

关于haskell - 使用foldr实现zip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/235148/

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