Lisp предназначен для обработки списков. Есть ли язык для обработки дерева?

Имя Лиспа происходит от LIS t P rocessing. Связанные списки - это основная структура данных языков Lisp, а исходный код Lisp сам состоит из списков. В результате программы на Лиспе могут манипулировать исходным кодом как структурой данных (это известно как гомоиконность).

Однако список по определению является последовательной конструкцией. Это побуждает нас решать проблемы, используя последовательные языковые идиомы (алгоритмы, которые обрабатывают одну вещь за раз и накапливают результаты). Например, в Лиспе, где ячейки cons используются для реализации односвязных списков, операция car возвращает первый элемент списка, а cdr возвращает остальная часть списка. Мое видение - функциональный язык для параллельного выполнения, который разбивает проблемы на примерно равные подзадачи, рекурсивно решает их и объединяет подрешения.

Практически каждый код языка программирования уже разбит на деревья; существует ли гомоиконный язык, такой как Лисп, но с деревьями в качестве основной структуры данных? кстати, я бы назвал его Treep, для обработки TREE P .

Обновление: Интересная презентация (PDF) Гая Стила от 2009 года о параллельных алгоритмах и структурах данных, Организация функционального кода для параллельного выполнения: или, foldl и foldr Считается незначительным Вредно .

5
задан 3 revs 17 September 2010 в 22:41
поделиться