Об этом я не подумал. Но, можно ещё внедрять зависимости наоборот. Вставлять калбеки из чистых функций в монадические вычисления. Тогда, если дело ограничивается return.f, то можно давать некоторые гарантии. Но, как только вы заменили сигнатуру f с возвращающей a на IO а, так сразу возможен биг бадамум.
Если вы выполняете вычисление в монаде, то оно имеет доступ к побочным эффектам этой монады.
В первом варианте при вычислении c' может произойти всё что угодно, поскольку оно выполняется в IO (надеюсь то, что на месте return.to Upper может быть любое вычисление вида IO Char понятно).
Если вы засунете калбек с типом IO a глубоко внутрь вычисления и захотите там достать из него a, то у Вас всё вычисление будет в монаде IO, и гарантировать что там кроме Вашего калбека больше ничего не произошло вы не сможете.
Таким образом внутрь чистого вычисления, чтобы оно оставалось чистым, можно передавать только иммутабельные аргументы.
Странно всё это. На сколько я понимаю концепция состоит не в том чтобы отложить вычисления с побочными эффектами, а в том чтобы отделить их.
Если тебе нужно что-то из IO достань его, а потом положи в чистую функцию.
Счетчик 16 битный, но применяется по модулю размера памяти команд.
Память команд и память данных у авра разные.
И до кучи — нету на голом железе ни кучи ни стека.
Можно быстрее. Запрещяете прерывания и пишите через всю память порт 0, порт 1. Счетчик команд циклический, а порт, если мне не изменяет память, по умолчанию — out. получаете меандр на половине тактовой частоты.
Как только вы отказываетесь от тотальности (windows конечен и патчи к нему конечны) теорема об остановке перестает быть применима. Для любого конечного можества программ с конечным множеством входов существует программа решающая проблему остановки.
Колмогоровская сложность определяется с точностью до константы.
Для любой конечной последовательности существует язык, в котором она кодируется программой длинной в один бит.
И наконец, если я правильно это понял, в любом языке почти все конечные последовательности имеют описание не короче их самих.
Удивительно, но бесконечно-большие и бесконечно малые связаны через 1/х.
И стоит определить что значит в ваших терминах бесконечность, бесконечность плюс 1 и больше.
Так и аксиоматика уже не Пеано, а Пеано+.
Классически приводятся аксиомы групп, так как существуют неизоморфные группы. Но кмк аксиоматика это не совсем то, что подразумеваяется под термином явление, для моделей которого мы обсуждаем изоморфизм или отсутсвие такового.
Пусть А влечёт за собой Б, тогда А лежит в Б, тогда мера А не превосходит меры Б, тогда вероятность А не больше вероятности Б.
Статья замечательная.
В "Отлична от нуля лишь мера сплошного отрезка, пусть даже очень маленького." Лишь — лишнее.
Это не IO. Это — Reader.
В первом варианте при вычислении c' может произойти всё что угодно, поскольку оно выполняется в IO (надеюсь то, что на месте return.to Upper может быть любое вычисление вида IO Char понятно).
Если вы засунете калбек с типом IO a глубоко внутрь вычисления и захотите там достать из него a, то у Вас всё вычисление будет в монаде IO, и гарантировать что там кроме Вашего калбека больше ничего не произошло вы не сможете.
Таким образом внутрь чистого вычисления, чтобы оно оставалось чистым, можно передавать только иммутабельные аргументы.
сравните
и
Если тебе нужно что-то из IO достань его, а потом положи в чистую функцию.
Память команд и память данных у авра разные.
И до кучи — нету на голом железе ни кучи ни стека.
Для любой конечной последовательности существует язык, в котором она кодируется программой длинной в один бит.
И наконец, если я правильно это понял, в любом языке почти все конечные последовательности имеют описание не короче их самих.
И стоит определить что значит в ваших терминах бесконечность, бесконечность плюс 1 и больше.
Классически приводятся аксиомы групп, так как существуют неизоморфные группы. Но кмк аксиоматика это не совсем то, что подразумеваяется под термином явление, для моделей которого мы обсуждаем изоморфизм или отсутсвие такового.