用$括号括起来重写`map(fgh)x`?

Šef*_*ana 0 haskell

我想检查一下map (f.g.h) x,$如果没有括号,我们是否无法重写,因为我找不到方法.

以下是我的试验:

map (f.g.h) x
-> map (f.g.h) $ x  -- OK, no benefit
-> map $ f.g.h $ x  -- wrong as map doesn't take one parameter
-> (map $ f.g.h) x  -- Ok, no benefit, ugly :-)
Run Code Online (Sandbox Code Playgroud)

我发现只有优雅的选择才能使用

negate . sum . tail <$> [[1..5], [3..6]]]
Run Code Online (Sandbox Code Playgroud)

但我想确定我没有跳过上面的一些选项.谢谢

kar*_*kfa 8

怎么样?

let u = f.g.h in map u x
Run Code Online (Sandbox Code Playgroud)

没有括号,没有 $


Wil*_*sem 5

如果您定义该功能

map (f.g.h) x
Run Code Online (Sandbox Code Playgroud)

因此,您处理with的每个元素,这意味着我们首先应用它,然后应用于结果,最后应用于该结果.xf . g . hhgf

但是我们也可以使用三个单独的maps,例如:

map f $ map g $ map h x
Run Code Online (Sandbox Code Playgroud)