Через те що у Haskell аргументи функції не вкладаються у дужки при спробі передати результат однієї функції в іншу потрібно використати дужки для групування.

foo bar x -- Функції передаються два аргументи bar і x foo (bar x) -- Функції bar передається аргумент x і її результат підставиться як один аргумент функції foo

У цьому простому прикладі все виглядає просто і зрозуміло, але якщо у нас був би складніший вираз з іншими дужками все виглядало б не так зрозуміло.

Для полегшення додали спеціальний оператор зниження пріоритету. Складається він з одного символу $. Використати його ми можемо тут підставивши між функціями.

foo $ bar x

Результат буде той же що й з дужками.

Цей оператор має праву асоціативність і найнижчий пріоритет. Перевірити це ми можемо в інтерпретаторі.

> :i ($) ($) :: (a -> b) -> a -> b -- Defined in ‘GHC.Base’ infixr 0 $

Тако ж у цьому повідомленні ми бачимо тип цього оператора. Він приймає іншу функцію й аргумент цієї функції, а повертає результат цієї функції. Визначення цього оператора таке.

($) f x = f x

#ukrhaskell #програмування #haskell #оператор #$ #пріоритет #функції

Social.Net.Ua

@balaraz розкажіть, як ви зараз думаєте, навіщо оцей хаскель потрібен, які у нього переваги над імперативними мовами? (btw тег #ukrhaskell прикольний, буду користуватись)
@victor_tokarev @balaraz я літаральна закахаўся пасля таго, як адчуў «кампілюецца — значыць працуе» на ўласным досведзе: прыслаў наіўны https://github.com/commercialhaskell/stack/pull/3763, падрыхтаваўся да пінг-понгу, замест гэтага паправіў фармат вываду згодна заўваг і ўсё, PR прыняты. Я да гэтага 16 год праграмістам адпрацаваў і гэта было, так бы мовіць, нечакана.
Report currently building packages along with "Progress:" label by develop7 · Pull Request #3763 · commercialhaskell/stack

Rationale: make user feel more "in control" when waiting for these tens to hundreds of packages to be built by providing information on what is building now. Build progress line beforeProgress: 3/7...

GitHub
@adziahel о, то ви додали це в stack? Клас.
Щодо "компілюється = працює" я не зовсім згоден, але розумію чому так кажуть.