
let me give you an example: splitModule :: MonadClean m => ModuleName -> m () Split each of a module's declarations into a new module. Update the imports of all the modules in the moduVerse to reflect the split. Why do I want that? What does it mean? === start file == module Start where a = 1 b = 2 c = 3 will calling that function yield module foobar where a = 1 module baz.something.idont.know where b =2 module 3rd where c =3 I want to say: I have no idea - how the new modules will be named - which paths the new modules will have Function's return type is m (), so doesn't help much. Consider improving that documentation. More questions: input/output. findPaths "Language" >>= runMonadClean . mapM cleanImports . toList Whose task is it to write the "new cleaned up module" to disk again? does runMonadClean do it for me? Docs don't tell yet. Marc Weber