LINUX.ORG.RU

История изменений

Исправление quasimoto, (текущая версия) :

Дальше — чистых функций может быть не меньше грязных, их нужно различать на уровне семантики, документации, знания поведения. Дальше — pure это атрибут, такой же как const или noexcept, из его присутствия следует возможность делать CSE, его статические проверки были бы полезны.

Я уже утерял нить дискуссии. Кто кому что доказывает?

Нить про

int x = 0;

int f(int a) {
    return a + x;
}
x :: Ref Int
x <- new 0

f :: Int -> IO Int
f a = (a+) <$> get x -- a + x with generalized (+)

и вопрос являются ли такие f чистыми (очевидно, нет, в одном случае понятно почему, в другом — сфига ли оно тогда в IO).

Исходная версия quasimoto, :

Дальше — чистых функций может быть не меньше грязных, их нужно различать на уровне семантики, документации, знания поведения. Дальше — pure это атрибут, такой же как const или noexcept, из его присутствия следует возможность делать CSE, его статические проверки были бы полезны.

Я уже утерял нить дискуссии. Кто кому что доказывает?

Нить про

int x = 0;

int f(int a) {
    return a + x;
}
x :: Ref Int
x <- new 0

f :: Int -> IO Int
f a = (a+) <$> get x

и вопрос являются ли такие f чистыми (очевидно, нет, в одном случае понятно почему, в другом — сфига ли оно тогда в IO).