Что делает fullstop или период или отмечает точкой(.) средний в 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)
21
задан Don Stewart 18 April 2011 в 22:54
поделиться

6 ответов

f (g (x))

равно

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

в haskell: (например, g) (x)

45
ответ дан 29 November 2019 в 06:16
поделиться

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

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

3
ответ дан 29 November 2019 в 06:16
поделиться

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

2
ответ дан 29 November 2019 в 06:16
поделиться

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

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

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

16
ответ дан 29 November 2019 в 06:16
поделиться

Состав функции (страница довольно длинная, используйте поиск)

1
ответ дан 29 November 2019 в 06:16
поделиться

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

Prelude> :type (.)
(.) :: (b -> c) -> (a -> b) -> a -> c
Prelude> (*2) . (+1) $ 1
4
Prelude> ((*2) . (+1)) 1
4
12
ответ дан 29 November 2019 в 06:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: