В чем разница между . (точка) и $ (знак доллара)? - PullRequest
665 голосов
/ 02 июня 2009

В чем разница между точкой (.) и знаком доллара ($) ?. Насколько я понимаю, они оба являются синтаксическим сахаром для того, чтобы не использовать скобки.

Ответы [ 12 ]

0 голосов
/ 09 августа 2018

Все остальные ответы довольно хороши. Но есть важная деталь юзабилити о том, как ghc обрабатывает $, о том, что средство проверки типов ghc допускает использование типов с более высоким рангом / квантификацией. Например, если вы посмотрите на тип $ id, то обнаружите, что он возьмет функцию, аргумент которой сам по себе является полиморфной функцией. Такие мелочи не имеют такой же гибкости с эквивалентным оператором расстройства. (Это на самом деле заставляет задуматься, заслуживает ли $! Того же обращения или нет)

0 голосов
/ 16 октября 2016

Я думаю, что короткий пример, где вы бы использовали ., а не $, помог бы прояснить ситуацию.

double x = x * 2
triple x = x * 3
times6 = double . triple

:i times6
times6 :: Num c => c -> c

Обратите внимание, что times6 - это функция, которая создается из композиции функций.

...