Пиша скрипт, който има много логически сложен цикъл:
main = do
inFH <- openFile "..." ReadMode
outFH <- openFile "..." WriteMode
forM myList $ \ item ->
...
if ...
then ...
else do
...
case ... of
Nothing -> ...
Just x -> do
...
...
Кодът скоро лети надясно, така че мислех да го разбия на части, използвайки например where
клаузи. Проблемът е, че много от тези ...
съдържат изрази за четене/запис към двата манипулатора inFH
и outFH
и използването на израз where
ще изведе тези две имена извън контекста. Ще трябва да изпращам тези две променливи всеки път, когато използвам израз where
.
Има ли по-добър начин за справяне с това?