Когда использовать бессмысленный стиль?
Многие программисты haskell, включая меня, любят бессмысленный стиль, особенно при написании сложных синтаксических анализаторов. Они делают код более читаемым и менее многословным. Но иногда все происходит наоборот (например, при злоупотреблении экземплярами Monad и друзьями для (->) a).
flip ((.) . take) . drop).2 ответа:
Это, очевидно, вопрос личного стиля. Я думаю, что стиль без точек-это инструмент для прояснения ваших идей, и просмотр
(->) aкакMonadи(->)какArrow- Хорошая вещь, если она служит этой цели.Я могу думать о том, что один делает, а другой нет:
Причина привлечения комбинаторов из общих типов управления заключается не только в том, чтобы сделать ваш смысл ясным, но и в том, чтобы напомнить вам, что они существуют и часто полезны не только для создания беспредметных определений, но и для решения проблем. Как и во всем остальном, нужно быть осторожным, чтобы не переусердствовать. Определение без точек, включающее слишком много комбинирующих функций, может быстро усложниться.
- не сочиняйте с карри композицией, это просто слишком сложно,чтобы препарировать, например,
(sort .) . (++)лучше всего писать\xs ys -> sort (xs ++ ys).- используйте любой комбинатор из стандартных модулей
Control.*, например, напишитеcurry (negate *** (+1)), используя(->)в качествеArrowиap (zipWith (+)) tail, используя(->) [a]какMonad.