Re[105]: Мнение: объектно-ориентированное программирование —
От: AlexRK  
Дата: 13.11.19 08:36
Оценка:
Здравствуйте, 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.

И ты совершенно прав. Белый, красный, чистый, грязный — это неформальные ощущения. Квалиа, как любит говорить один местный гражданин. А формально другое — длина волны, частота излучения и т.п. И даже там на самом низком уровне приходится прибегать к аксиоматике — потому что в любом случае ты упираешься в базовые понятия, которые не выразимы ни через что.

Однако я вижу, что тебе не нравятся формальные рассуждения, тебе ближе варианты со "здравым смыслом".
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.