Итак, я спорю с моим другом, который утверждает, что компилятор, такой как GCC, может автоматически определять чистую функцию без какой-либо информации о типе. Я сомневаюсь, что.
Такие языки, как D или Haskell, имеют чистую систему типов, и программист явно определяет, какая функция является чистой, а какая нет. Чистая функция не имеет побочных эффектов и поэтому может быть очень легко распараллелена.
Итак, вопрос: все это необходимо или нет? Может ли компилятор определить чистоту без какой-либо мета-информации или информации о типе, просто предположив, что все, что выполняет ввод-вывод или автоматически обращается к глобальным переменным, не является чистым?