Я написал следующий код, который берет кучу точек и рисует их на экране с помощью библиотеки gloss.
let s = blocks pes
pts = map (map mkPt) s {- stitches to points-}
lines = map Line pts {-points to lines -}
pict = Pictures lines {- lines to a picture -}
in do displayInWindow "My Window" (200, 200) (10, 10) white pict
Он работает нормально, но мне пришло в голову, что здесь есть повторяющийся паттерн: цепочка вызовов функций, результат каждой из которых попадает в последний аргумент следующей. Поэтому я провел рефакторинг, удалив промежуточные переменные, изменив порядок и соединив функции в цепочку с помощью композиции функций (".") следующим образом:
let pict = Pictures . (map Line) . (map $ map $ mkPt) . blocks $ pes
in do displayInWindow "My Window" (200, 200) (10, 10) white pict
К счастью, это тоже прекрасно работает. Но мне интересно, не напрягает ли меня читабельность, или я просто не привык читать и писать код в стиле point free. Также, как мне рассуждать об этом коде? Является ли вторая версия более эффективной или просто более тернистой? Есть ли что-нибудь, что я могу сделать стилистически, чтобы сделать его более понятным?