Haskell中句号或句点或点(。)的含义是什么?

时间:2010-03-21 09:42:27

标签: haskell syntax operators function-composition

我真的希望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)

6 个答案:

答案 0 :(得分:45)

f(g(x))

数学中的

f ∘ g (x)

haskell中的

( 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)相同。换句话说,句点用于取结果从右边的函数中,将它作为参数提供给左边的函数,并返回一个代表这个计算的新函数。“

来源:Google search 'haskell period operator'

答案 4 :(得分:2)

这是一个功能组合:link

答案 5 :(得分:1)

Function composition(页面很长,请使用搜索)