Звучит так, как будто вы хотите использовать стиль кода «без точек» для \a b c -> a + b + c
. Пусть будет известно, что, как правило, \a b c -> a + b + c
часто предпочтительнее, чем указывать свободный код, потому что гораздо легче читать через четыре недели, когда вы обнаружили ошибку.
Существует статья вики о бессмысленном программировании ( source ).
Вы также можете установить пакет pointfree
, который позволяет решить эти проблемы в командной строке. Например,
$ pointfree '\x y z -> x + y + z'
((+) .) . (+)
Итак, ((+) .) . (+)
- это версия без точек (x, y и z - это «точки», если вам интересно, и нет, это не имеет ничего общего с геометрией). Вы можете использовать это определение, если хотите, но большинство людей будут смотреть на ваш код и не будут знать, что должен делать этот забавно выглядящий кусок искусства ASCII. Половина из них справится с карандашом и бумагой, но разве оригинал \x y z -> x + y + z
не намного легче для глаз?
Подсказка: если вам когда-нибудь понадобится выяснить, что делает какой-то бессмысленный код, посмотрите на тип:
Prelude> :t ((+) .) . (+)
((+) .) . (+) :: (Num a) => a -> a -> a -> a
Или вы можете установить пакет pointful
, который приблизительно равен pointfree
.
Резюме: Добро пожаловать в мир программирования без точек, действуйте с осторожностью, чтобы ваш код не читался.