Я создаю много временных переменных в Haskell:
main = do
let nums'' = [1..10]
let nums' = a . bunch . of_ . functions $ nums''
let nums = another . bunch . of_ . functions $ nums'
print nums
То есть я не хочу писать длинную цепочку функций вот так:
let nums = another . bunch . of_ . functions . a . bunch . of_ . functions $ [1..10]
Потому что она становится нечитаемой для меня , поэтому я пытаюсь сгруппировать функции в соответствии с тем, что они делают. В процессе я создаю кучу уродливых временных переменных, таких как nums''
и nums'
(я мог бы дать им более осмысленные имена, но смысл остается в силе... новая строка означает новую переменную).
Это тот случай, когда затененная переменная приведет к более чистому коду. Я хотел бы сделать что-то вроде:
let nums = [1..10]
nums = a . bunch . of_ . functions $ nums
nums = another . bunch . of_ . functions $ nums
I.e. точно так же, как и выше, но без временных переменных. Есть ли способ сделать это в Haskell? Возможно, все это можно было бы обернуть в «транзакцию»:
atomically $ do
(...this code...)
return nums
Что-то, что сообщит Haskell, что код в этом разделе содержит затененные переменные, и он должен беспокоиться только о конечном результате. Возможно ли это?