Ну и самый главный вывод: я хочу, чтобы вы признали свою ошибку в словах
и в словах
Согласитесь, что ошибались, когда называли "каждый ОЛ макрос" "чистой функцией, детерминированной функцией, без побочных эффектов"?
Если не разбираетесь ("предложить свой источник академической строгости не могу"), то и не надо называть что попало "детерминированными функциями без побочных эффектов". Сейчас получается, что никакой источник привести не можете, и одновременно с этим настаиваете на своей правоте. Так не бывает.
Если в макросе есть обратная связь или какой-нибудь функциональный блок (blink, sr-триггер), или write to FB, то этот макрос наверняка не является чистым.
Разумеется, можно blink просто-напросто не подключить к выходам. Но, если blink как-то влияет на выходы, то, всё, макрос 100% недетерминирован. Если в макросе SR триггер влияет на выход и связан со входами макроса, то это 100% макрос с побочным эффектом.
Да, чистые функции проще тестировать, но эта простота и возникает только для тех функций, которые не зависят от истории прошлых запусков.
Функция "add :: Int -> Int -> Int" это чистая функция. Её протестировать несложно.
А, если в макросе есть SR триггер, то тестировать такой макрос гораздо сложнее, т.к. нужно подавать разные истории входов, а этих историй потенциально очень большое количество. Историю какой длины нужно брать? 10 циклов? 100циклов? или, может 10000 циклов?
Макрос с SR триггером не является чистой функцией, и тестировать его действительно сложнее.





Ответить с цитированием