Haskell 如何与多个运算符一起使用Map

Haskell 如何与多个运算符一起使用Map,haskell,Haskell,是否可以使用带有两个操作符的map,如map((*2)+3)[1,2,3,4]?如果是,怎么办?我想在列表中创建一个应用(x*2)+3的函数。我认为首先在这里引入lambda表达式很容易: map (\x -> (x*2)+3) [1,2,3,4] 在这里,您可以将其视为一个函数“链”,我们将输入传递给最右边的函数(这里(*2)),然后将结果传递给最左边的函数(这里(+3))。您将映射到单个函数。但是这个函数可以做任何你想做的事情。您的示例可以作为匿名函数给出,例如: map (\n -&

是否可以使用带有两个操作符的
map
,如
map((*2)+3)[1,2,3,4]
?如果是,怎么办?我想在列表中创建一个
应用(x*2)+3
的函数。

我认为首先在这里引入lambda表达式很容易:

map (\x -> (x*2)+3) [1,2,3,4]

在这里,您可以将其视为一个函数“链”,我们将输入传递给最右边的函数(这里
(*2)
),然后将结果传递给最左边的函数(这里
(+3)
)。

您将
映射到单个函数。但是这个函数可以做任何你想做的事情。您的示例可以作为匿名函数给出,例如:

map (\n -> n * 2 + 3) [1,2,3,4]
但是,您也可以使用函数组合,对于这样的情况,如果您的函数是“先做一件事,然后再做另一件事”,那么函数组合可能更具可读性:

这反过来(通过所谓的“函子定律”)等于


我个人觉得可读性更强。

谢谢你的帮助,我知道我正在尝试将map((+3)。(*2))应用于所有奇数,并将map(+3)应用于所有偶数。我在案例中进行了尝试,但它只检查第一个数是奇数还是偶数。这里是我的代码oddandeven::Int->[Int]oddandeven=\t->x的案例t |奇数x->x:map(+1)。(*3))(oddandeven x)|否则->x:map(
div`2)(oddandeven x)`那么你必须定义一个类型为
Int->Int
的函数,该函数对奇数或偶数进行检查并执行适当的操作-然后
map
map (\n -> n * 2 + 3) [1,2,3,4]
map ((+3) . (*2)) [1,2,3,4]
map (+3) . map (*2) $ [1,2,3,4]