Здравствуйте, samius, Вы писали:
S>>>>>Нет, не согласен. См. определение. Принимать IO — еще не грязь.
S>ARK>>>Единственно разумный подход — считать, что это грязь.
S>>>В соответствии с единственным разумных подходом (по твоей версии) выходит, что следующая функция в хаскеле грязная, т.к. может принимать IO:
S>>>S>>>id x = x
S>>>
ARK>>"Может принимать" и "всегда принимает/возвращает" — разные вещи. Если просто "может" — значит, эта функция ортогональна IO и грязной не является. А вот когда не МОЖЕТ, а ДОЛЖЕН — это уже другое дело.
S>Это юлеж. Постом назад альтернатив и ортогональностей не было, был единственно разумный подход!
Так твоя функция не принимает IO. IO нет в сигнатуре. А под "принимать IO" речь шла именно о сигнатуре ("Функция является грязной, если она принимает IO среди своих аргументов").
S>Ну а почему неотделим-то?
S>Т.е. все, кто кэширует IO, делают это лишь из-за богатого воображения?
Можешь продемонстрировать это?
ARK>>ОК. Давай определимся с критерием. Ты согласен, что физически грязь можно получить, вызвав любую функцию (см. виртуальные машины)? Равно как и наоборот — можно физически НЕ получить грязь, вызвав любую функцию (все зависит от откружения, в котором функция запускается)?
S>С этим я не согласен. Тут уже находились любители измерять грязь по машинному коду. Ты предлагаешь измерять ее по вычислителю. Этого нет смысла, вычислитель может залить все грязью, даже не видя исходник функции. Какой смысл в таком критерии?
Смысл в этом критерии такой: он позволяет отделить зерна от плевел. Понять, где проходит граница чистоты.
ARK>>Что же тогда называть "чистой функцией"? Я предлагаю вариант с ДЕКЛАРАЦИЕЙ чистоты (а не тем, что реально происходит при вызове): http://rsdn.org/forum/philosophy/7589812.1Автор: AlexRK
Дата: 13.11.19
ARK>>Если такой вариант трактовки чистоты ты считаешь неправильным, то назови с твоей точки зрения правильный. Еще раз напомню, что вариант "чистая функция — которая не делает ввод-вывод" может быть легко фальсифицирован с помощью подделки окружения, в котором эта функция вызывается.
S>Видишь лист бумаги? Думаешь, он белый? А я возьму красный фильтр и докажу что он красный. Именно это ты предлагаешь с фальсификацией окружения. Смысла в этом 0.
И ты совершенно прав. Белый, красный, чистый, грязный — это неформальные ощущения. Квалиа, как любит говорить один местный гражданин. А формально другое — длина волны, частота излучения и т.п. И даже там на самом низком уровне приходится прибегать к аксиоматике — потому что в любом случае ты упираешься в базовые понятия, которые не выразимы ни через что.
Однако я вижу, что тебе не нравятся формальные рассуждения, тебе ближе варианты со "здравым смыслом".