我真的希望 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)
我真的希望 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)
f(g(x))
是
在数学中:f ∘ g
(x)
在哈斯克尔: ( f . g )
(x)
这意味着功能组合。看到这个问题。
另请注意,f.g.h x
不等价于(f.g.h) x
,因为它被解释为f.g.(h x)
除非 (hx) 返回函数,否则不会进行类型检查。
这就是 $ 运算符可以派上用场的地方:f.g.h $ x
将 x 从一个参数h
转换为整个表达式的参数。因此它变得等同于f(g(h x))
并且管道再次工作。
.
是函数组合的高阶函数。
Prelude> :type (.)
(.) :: (b -> c) -> (a -> b) -> a -> c
Prelude> (*2) . (+1) $ 1
4
Prelude> ((*2) . (+1)) 1
4
“句号是一个函数组合算子。通俗地说,其中f和g是函数,(f . g) x的意思和f(gx)一样。也就是说,句号是用来从函数中取结果的在右边,将其作为参数提供给左边的函数,并返回一个代表这个计算的新函数。”
它是一个函数组合:link
功能构成(页面很长,使用搜索)