gpt4 book ai didi

list - unzip的概括是什么?

转载 作者:行者123 更新时间:2023-12-04 10:24:09 25 4
gpt4 key购买 nike

我从列表中知道的大多数方法实际上都是一些知名类型类的特例。方法和相关类型类的一些示例:

  • map :: (a -> b) -> [a] -> [b]Functor
  • foldr :: (a -> b -> b) -> b -> [a] -> bFoldable
  • forM :: Monad m => [a] -> (a -> m b) -> m [b]Traversable
  • concat :: [[a]] -> [a]Monad

  • 可能列表还在继续(请原谅双关语)。

    我想知道 unzip :: [(a, b)] -> ([a], [b]) 背后的“更深层含义” .可以使用 [] 的一些著名实例来实现吗?例如, (,a) 的仿函数实例?还是其他一些情况?理想情况下,我希望这种类型有一个更抽象的函数: SomeClass m => unzip :: m (a, b) -> (m a, m b) .是否有类(class)可以完成这项工作?

    最佳答案

    您可以简单地进行第一次和第二次预测:

    gunzip :: Functor f => f (a, b) -> (f a, f b)
    gunzip ps = (fmap fst ps, fmap snd ps)

    但请注意 gunzip遍历 ps两次不同于通常的 zip对于列表,所以很麻烦,因为 ps在第一次通过后不会被垃圾收集并留在内存中,这会导致大列表上的内存泄漏。

    关于list - unzip的概括是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35720366/

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