код без точек более эффективен или просто более тернист?

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

25
задан Will Ness 27 October 2013 в 15:26
поделиться