У меня есть следующее выражение Haskell:
map ($ 5) [(-),(+),(*)]
Я знаю, что оператор приложения функции ($) применяет функцию к данному параметру. Однако, поскольку функции (-), (+) и (*) принимают два параметра, применяя эти функции к 5 через map, функции применяются частично.
Результирующий список будет содержать три функции, которые принимают другой параметр и:
(1) Вычитает параметр из 5
(2) Добавляет параметр к 5
(3) Умножает параметр на 5
Однако можно ли сказать, что приведенное выше выражение эквивалентно следующему?
[(5 -),(5 +),(5 *)]
Я думаю, что это правильно, так как я проверил типы (5 -), (5 +) и (5 *) в GHCI, и все они являются функциями, которые принимают число и возвращают число:
(5 -) :: Num a => a -> a
(5 +) :: Num a => a -> a
(5 *) :: Num a => a -> a
Любые идеи приветствуются.