让我们考虑以下问题:
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))
如何使用<<
和>>
运算符来实现?甚至可以组合多元函数吗?
答案 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的类型签名有误