我有一个函数想要用多组输入进行测试。假设函数是
f :: a -> b -> c
现在我有两个输入列表:
inputA :: [a]
inputB :: [[b]]
For inputA !! i
,我要评价f $ input !! i
对于列表中的每个元素inputB !! i
。我知道我需要几个应用程序map
做到这一点,但我很难找到解决方案。
我最近的尝试是
map f inputA <$> inputB
这给出了以下错误:
无法匹配预期类型a0 -> b0' with actual type
[b1]'
在调用的返回类型中map'
Probable cause:
map' 应用于太多参数
在第一个参数中(<$>)', namely
输入图S'
表达式中:map f inputA inputB
我应该如何解决这个问题?我不一定想要一个完整的解决方案。朝着有帮助的方向推动(甚至推动)肯定会受到赞赏。
附加想法:
map f inputA :: [b -> c]
我认为这是正确的方向。现在我需要将每个函数映射到每个输入列表上inputB
.
为了澄清,我想绘制地图i
中的第一个函数map f inputA
超过i
第一个输入列表inputB
得到结果outputC :: [[c]]
.
您可以使用zipWith
Prelude> let a = [1,2,3]
Prelude> let b = [[1,2,3],[4,5,6],[7,8,9]]
Prelude> zipWith (\a' bl -> map (+a') bl) a b
[[2,3,4],[6,7,8],[10,11,12]]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)