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