gpt4 book ai didi

haskell - 在两个输入列表上映射一个函数

转载 作者:行者123 更新时间:2023-12-05 08:34:49 25 4
gpt4 key购买 nike

我有一个函数,我想用几组输入来测试它。假设函数是

f :: a -> b -> c

现在我有两个输入列表:

inputA :: [a]
inputB :: [[b]]

对于 inputA !! i , 我要评估 f $ input !! i对于 inputB !! i 列表中的每个元素.我知道我需要多次申请 map要做到这一点,但我很难想出一个解决方案。

我最近的尝试是

map f inputA <$> inputB

出现以下错误:

Couldn't match expected type a0 -> b0' with actual type[b1]'
In the return type of a call of map'<br/>
Probable cause:
map' is applied to too many arguments
In the first argument of (<$>)', namelymap f inputA'
In the expression: 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]]

关于haskell - 在两个输入列表上映射一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19194396/

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