В этой статье я расскажу как с помощью генераторов можно модифицировать рекурсию так, чтобы она использовала кучу вместо стека и при этом почти не отличалась от обычной рекурсии
Пользователь
Разбор монады ContT, или как написать продвинутый goto, генераторы и файберы на хаскеле

В этой статье я разберу монаду ContT
, и покажу как вернуть return
и другие control-flow операторы из императивных языков программирования, которых мне так нехватало, когда я начинал изучать хаскель.
Ломаем хаскелем Brainfuck
Немного о bfc
Brainfuck — очень глупый язык. Там есть лента из 30к ячеек, по байту каждая. Команды bfc это:
- Передвижение по ленте влево и вправо (символы
<
и>
) - Увеличение и уменьшение значения в ячейке (символы
+
и-
) - Ввод и вывод текущей ячейки (символы
.
и,
) - И цикл while, который продолжается пока значение в текущей ячейке не ноль.
[
и]
это начало и конец цикла соответственно
Программировать на bfc сложно. Но, как известно, любую проблему можно решить добавлением слоя абстракции (кроме проблемы большого количества абстракций).
Добавляем деструкторы в C

В данной статье будет описано создание кастомного аллокатора на си c регистрацией колбеков, которые будут вызваны при освобождении памяти. Нужен для того, чтобы при создании записать туда деструктор, а в конце просто вызвать free, не погружаясь в детали его работы.
Добавляем генераторы в Common Lisp
В Common Lisp из коробки довольно скудные, по сравнению с другими языками, возможности работы с последовательностями. В этой статье я покажу один из способов реализовать генераторы и вспомогательные функции для них.
Пишем try-catch в C не привлекая внимания санитаров

Конструкция try-catch есть во всех широко используемых сегодня языках, кроме C. Не в силах мириться с вопиющей несправедливостью, попробуем написать свою реализацию этой конструкции
Информация
- В рейтинге
- 2 731-й
- Зарегистрирован
- Активность