通过镜头折叠或连接Aeson阵列

时间:2018-08-18 08:09:19

标签: haskell lens aeson

我从https://www.stackage.org/haddock/lts-12.1/lens-aeson-1.0.2/Data-Aeson-Lens.htmlhttps://www.stackage.org/haddock/lts-12.1/lens-4.16.1/Control-Lens-Fold.html开始尝试弄清楚如何编写一个表达式,该表达式使我可以构造以下类型的东西:

import Data.Aeson as A

functionIWant 
  :: (Vector A.Value)
  -> (A.Value -> [a])
  -> [a]

1 个答案:

答案 0 :(得分:1)

有两种镜头功能可用于将与常规Foldable相关的功能“提升”到镜头世界:

  • folded折叠在Foldable容器的所有元素上,在本例中为Vector
  • folding,产生一个返回Foldable结果的函数。

您可以将它们组成一个新的Fold,然后使用toListOf获得最终列表。

folded也有Traversable的类似物,称为traversed