我真的希望Google更擅长搜索语法:
decades :: (RealFrac a) => a -> a -> [a] -> Array Int Int
decades a b = hist (0,9) . map decade
where decade x = floor ((x - a) * s)
s = 10 / (b - a)
答案 0 :(得分:45)
f(g(x))
是
数学中的:f ∘ g
(x)
:( f . g )
(x)
答案 1 :(得分:16)
这意味着功能构成。 见this question。
另请注意,f.g.h x
不等同于(f.g.h) x
,因为它被解释为f.g.(h x)
除非(h x)返回函数,否则不会进行类型检查。
这是$运算符派上用场的地方:f.g.h $ x
将x作为参数转换为h
,成为整个表达式的参数。因此它等同于f(g(h x))
并且管道再次起作用。
答案 2 :(得分:12)
.
是函数组合的高阶函数。
Prelude> :type (.)
(.) :: (b -> c) -> (a -> b) -> a -> c
Prelude> (*2) . (+1) $ 1
4
Prelude> ((*2) . (+1)) 1
4
答案 3 :(得分:3)
“句点是函数组合运算符。一般来说,f和g是函数,(f.g)x表示与f(gx)相同。换句话说,句点用于取结果从右边的函数中,将它作为参数提供给左边的函数,并返回一个代表这个计算的新函数。“
答案 4 :(得分:2)
这是一个功能组合:link
答案 5 :(得分:1)
Function composition(页面很长,请使用搜索)