Я пишу скрипт с очень сложным логическим циклом:
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
.
Есть ли лучший способ справиться с этим?