Подтвердить что ты не робот

Что означает полный цикл или период или точка (.) В Haskell?

Я действительно хочу, чтобы 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)
4b9b3361

Ответ 1

f(g(x))

есть

в математике: f ∘ g (x)

в haskell: ( f . g ) (x)

Ответ 2

Это означает состав функций. См. этот вопрос.

Обратите внимание, что f.g.h x не эквивалентен (f.g.h) x, потому что он интерпретируется как f.g.(h x), который не будет проверяться, если (h x) не возвращает функцию.

Здесь может понадобиться оператор $: f.g.h $ x превращает x из параметра в h в параметр для всего выражения. И поэтому он становится эквивалентным f(g(h x)), и труба работает снова.

Ответ 3

. - функция более высокого порядка для композиции функций.

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

Ответ 4

"Период является оператором композиции функций. В общих терминах, где f и g - функции, (f. g) x означает то же самое, что и f (gx). Иными словами, период используется для принятия результата из функции справа, подайте ее как параметр в функцию слева и верните новую функцию, которая представляет это вычисление."

Источник: Google search 'haskell period operator

Ответ 5

Это композиция функции: ссылка