在Haskell中,句号、句点或点(.)是什么意思?

3npbholx  于 2023-01-05  发布在  其他
关注(0)|答案(6)|浏览(212)

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

5vf7fwbs1#

第一个月

在数学中:一米一米一x一米二米一x
在 haskell :x1米3英寸x1米4英寸

djmepvbi

djmepvbi2#

表示函数组合,参见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)),管道再次工作。

xpszyzbs

xpszyzbs3#

.是用于函数合成的高阶函数。

Prelude> :type (.)
(.) :: (b -> c) -> (a -> b) -> a -> c
Prelude> (*2) . (+1) $ 1
4
Prelude> ((*2) . (+1)) 1
4
tyky79it

tyky79it4#

句点是一个函数复合运算符。一般来说,当f和g是函数时,(f . g)x的含义与f(g x)相同。换句话说,句点用于从右边的函数获取结果,将其作为参数提供给左边的函数,并返回表示此计算的新函数。

ff29svar

ff29svar5#

它是一种功能组合:链接

jm2pwxwz

jm2pwxwz6#

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

相关问题