Ответ 1
f(g(x))
есть
в математике: f ∘ g
(x)
в haskell: ( f . g )
(x)
Я действительно хочу, чтобы 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)
в haskell: ( f . g )
(x)
Это означает состав функций. См. этот вопрос.
Обратите внимание, что f.g.h x
не эквивалентен (f.g.h) x
, потому что он интерпретируется как f.g.(h x)
, который не будет проверяться, если (h x) не возвращает функцию.
Здесь может понадобиться оператор $: 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). Иными словами, период используется для принятия результата из функции справа, подайте ее как параметр в функцию слева и верните новую функцию, которая представляет это вычисление."
Источник: Google search 'haskell period operator
Это композиция функции: ссылка
Состав функций (страница довольно длинная, используйте поиск)