我在 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''
and nums'
(我可以给它们起更有意义的名字,但重点仍然存在......每一个新行都意味着一个新变量)。在这种情况下,阴影变量会导致代码更清晰。我想做类似的事情:
let nums = [1..10]
nums = a . bunch . of_ . functions $ nums
nums = another . bunch . of_ . functions $ nums
即与上面完全相同,但没有临时变量。在 Haskell 中有什么方法可以做到这一点吗?也许整个事情可以包装在一个“交易”中:
atomically $ do
(...this code...)
return nums
让 Haskell 知道本节中的代码包含阴影变量,它应该只担心最终结果。这可能吗?