25

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

6 回答 6

48

f(g(x))

在数学中:f ∘ g (x)

在哈斯克尔: ( f . g ) (x)

于 2010-03-21T09:52:35.833 回答
18

这意味着功能组合。看到这个问题

另请注意,f.g.h x不等价于(f.g.h) x,因为它被解释为f.g.(h x)除非 (hx) 返回函数,否则不会进行类型检查。

这就是 $ 运算符可以派上用场的地方:f.g.h $ x将 x 从一个参数h转换为整个表达式的参数。因此它变得等同于f(g(h x))并且管道再次工作。

于 2010-03-21T09:47:22.357 回答
13

.是函数组合的高阶函数。

Prelude> :type (.)
(.) :: (b -> c) -> (a -> b) -> a -> c
Prelude> (*2) . (+1) $ 1
4
Prelude> ((*2) . (+1)) 1
4
于 2010-03-21T09:48:51.223 回答
4

“句号是一个函数组合算子。通俗地说,其中f和g是函数,(f . g) x的意思和f(gx)一样。也就是说,句号是用来从函数中取结果的在右边,将其作为参数提供给左边的函数,并返回一个代表这个计算的新函数。”

资料来源:谷歌搜索“haskell period operator”

于 2010-03-21T09:47:31.820 回答
2

它是一个函数组合:link

于 2010-03-21T09:47:10.657 回答
1

功能构成(页面很长,使用搜索)

于 2010-03-21T09:48:29.953 回答