Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет superhuman ([info]superhuman)
@ 2014-01-09 00:27:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Сегодня весь день промучился с одной кажущейся простой функцией - разложить сложное дерево на простые. Типа в терминах деревьев Лиспа (списков) из (a ((b c) d) e) получить (a (id1 d) e) и список пар типа (id1 . (b c)). Здесь корнем дерева считается голова списка, последующие - детьми.

Оказывается, не такая простая функция, если её выписывать только в терминах классического функционального программирования.

В прошлый раз писал, собственно, для списков Схемы / Лиспа. Сегодня - для структуры "корневое дерево". И уже все функции высшего порядка готовы, двойные свёртки, однако, и всё равно. Весь день промудохался, но не напрасно, чувствую, не напрасно.