в итоге haskell_main - чистый, потому что он возвращает ЧИСТОЕ значение - структурку IO. То что интерпретация этого ИО через unsafe_perform - грязное, никто ж не спорит, но это происходит ВНЕ нашего кода, в haskell_runtime, который писали умные чуваки и которы можно