多元函数组成

时间:2018-11-22 08:54:20

标签: elm

让我们考虑以下问题:

f: Int -> Int -> Int -> Int
f a b c = a + b + c

g: Int -> Int
g x = x * 2

现在,我想创建一个类似

的组合函数
f(g(a), g(b), g(c))

如何使用<<>>运算符来实现?甚至可以组合多元函数吗?

2 个答案:

答案 0 :(得分:4)

  

如何使用<<和>>运算符来实现?甚至可以组合多元函数吗?

是的,很容易:

h = flip flip g << ((<<) (<<)) << ((>>) g) << f << g

h<function> : number -> number -> number -> number,与h a b c = f (g a) (g b) (g c)相同。

我认为我们不需要深入研究正确性,因为带参数的版本显然更具可读性。

答案 1 :(得分:3)

榆树中并不真正存在多变量。我能建议的最好是

f : Int -> Int -> Int -> Int
f a b c =
    [ a, b, c ] |> List.map ((<|) g) |> List.sum


g : Int -> Int
g x =
    x * 2

请注意,g的类型签名有误