История изменений
Исправление monk, (текущая версия) :
Для этого надо явно сделать «events@…». Это случайно написать достаточно сложно.
Да, можно случайно ошибиться, если использовать разные имена для хвоста списка.
main events = (readFile "a"):g events
where
-- должно быть g (inString с:events) = ...
g (inString с:events') = (writeFile "b" с):(readNextFile "c"):h events
Но имя с штрихом тоже используется только если надо одновременно обращаться к варианту без штриха и со штрихом. То есть тоже маловероятно. А если писать g и h не внутри where, то ошибка вообще невозможна.
К слову, зато есть возможность обратиться к прошлому или позапрошлому событию. В IO никак, разве что явно копировать в какой-то журнал.
Исходная версия monk, :
Для этого надо явно сделать «events@…». Это случайно написать достаточно сложно.
Да, можно случайно ошибиться, если использовать разные имена для хвоста списка.
main events = (readFile "a"):g events
where
-- должно быть g (inString с:events) = ...
g (inString с:events') = (writeFile "b" с):(readNextFile "c"):h events
Но имя с штрихом тоже используется только если надо одновременно обращаться к варианту без штриха и со штрихом. То есть тоже маловероятно.
К слову, зато есть возможность обратиться к прошлому или позапрошлому событию. В IO никак, разве что явно копировать в какой-то журнал.