小编Oli*_*Oli的帖子

是否有用于“压缩”相同长度元组的 Haskell 镜头功能?

我希望能够使用一个函数组合相同长度的两个元组,类似于zipWith来自base. 例如,对于长度为 3 元组的情况:

zipTupleWith f (a0,a1,a2) (b0,b1,b2) = (f a0 b0, f a1 b1, f a2 b2)
Run Code Online (Sandbox Code Playgroud)

虽然我想要一个适用于任何长度的函数。

zipTupleWith使用该lens包创建了一个函数:

zipTupleWith :: (Each s1 t1 a a, Each s2 s2 b b) => (a -> b -> a) -> s1 -> s2 -> t1
zipTupleWith f a b = a & partsOf each %~ flip (zipWith f) (b ^.. each)
Run Code Online (Sandbox Code Playgroud)

zipWith只要函数的类型为 ,这可以是两个元组a -> b -> a。这个限制是因为partsOf在参数上使用了函数a …

haskell tuples haskell-lens

14
推荐指数
1
解决办法
204
查看次数

标签 统计

haskell ×1

haskell-lens ×1

tuples ×1