Я написал следующий код, который берет кучу точек и рисует их на экране с помощью библиотеки глянца.
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
К счастью, это тоже отлично. Но мне интересно, не напрягаю ли удобочитаемость, или если я просто не привык к чтению и написанию кода стиля без кода. Кроме того, как мне объяснить этот код? Является ли вторая версия более эффективной или просто сложной? Есть ли что-нибудь, что я могу сделать стилистически, чтобы сделать его более ясным?