Есть очень простой пример: SR-триггер. Он является недетерминированным в том плане, что при одних и тех же значениях S и R на входе он может возвращать TRUE, а может возвращать FALSE. Например, если подать S=FALSE, R=FALSE, то невозможно предсказать что именно вернёт SR.
Ещё раз: "недетерминированность" не означает, что "вообще невозможно предсказать поведение SR-триггера. Оно означает лишь то, что для такого предсказания нужно знать всю историю событий.
В этом плане операция ADD является детерминированной и чистой. Т.е. результат ADD не зависит от прошлых запусков ADD, не зависит от какого-то скрытого состояния, а зависит только от аргументов.
Поэтому, если в макросе используются ОЛ ФБ или обратные связи, то этот макрос уже перестаёт быть детерминированным. Это не значит, что ОЛ ломается. Это значит, что для понимания принципа работы такого макроса нужно учитывать потенциальные скрытые состояния.
PS. Если продолжение, то имеет смысл в теме
Макросы ОЛ: с побочными эффектами и/или детерминированные
PPS. Тов. писал, что "каждый макрос в ОЛ есть детерминированная функция без побочных эффектов", и именно это неправильно. Да, в ОЛ могут быть макросы, являющиеся "детерминированной функцией без побочных эффектов". Например, если макрос состоит только из математики и логики (ну, ADD/AND/NOT/fMUL и т.п.). Но заявлять, что "каждый макрос в ОЛ без побочных эффектов" это явное лукавство, т.к. куча макросов направлена именно на побочные эффекты (на изменение внутреннего состояния ФБ, используемых в макросе). Если в макросе обратная связь или какой-нибудь ФБ, то всё, макрос наверняка с побочным эффектом и недетерминированный.