$
действительно оператор, определяемый как:
f $ x = f x
-- or equivalently:
($) f x = f x
Ваше выражение выше эквивалентно (по определению map
):
[($ 3) (4 +), ($ 3) (10 *), ($ 3) sqrt]
Скобкив ($ 3)
и (4 +)
не являются обязательными.Они являются частью так называемой операторской секции .По сути, существует четыре способа использования инфиксного оператора (например, +
):
Между двумя аргументами:
x + y
Только давая первый аргумент:
(x +)
-- like \y -> x + y
Только давая второй аргумент:
(+ y)
-- like \x -> x + y
Без аргументов:
(+)
-- like \x y -> x + y
($ 3) f
оценивается до f $ 3
оценивается до f 3
.
($ 3) (4 +)
оценивается до (4 +) $ 3
оценивается до (4 +) 3
оценивается до 4 + 3
оцениваетсядо 7
.