Игнорирование встроенного взаимодействия и переходных процессов, возможно ли создавать любые структуры данных в Clojure, содержащие прямые циклические ссылки?Можно ли создавать круговые ссылки в Clojure?
Казалось бы, неизменные структуры данных могут содержать только ссылки на предыдущие версии самих себя. Существуют ли API-интерфейсы Clojure, которые могут создать новую структуру данных, которая имеет ссылку на себя?
Схема имеет форму letrec, которая позволяет создавать взаимно рекурсивные структуры, но, насколько я могу судить, у Clojure нет ничего подобного.
Этот вопрос связан с переносом Clojure на iOS - который не содержит сбор мусора, но имеет счет ссылок.
Вот так тесно связанный вопрос SO: [Как создать ленивую секвенцию, анонимную рекурсивную функцию в Clojure?] (Http://stackoverflow.com/questions/3373157/how-to-create-a-lazy- сл генерирующим-анонимную-рекурсивной-функции-в-Clojure). См. Мой ответ на него для ряда возможных подходов. Один из них - с помощью макроса 'letrec' какого-то типа - см. [Этот Gist] (http://gist.github.com/486880) для моей версии (которая работает как' letrec' Scheme). –
Спасибо за все ответы. Похоже, мне понадобится полный GC для обработки Clojure, и я экспериментирую с Gambit Scheme в качестве цели перевода. –
Возможно, вас это интересует [предложение обмена в стеке] (http://area51.stackexchange.com/proposals/11464/code-review?referrer=aWNm_PdciyFqjFW8CUacGw2 «обзор кода»). Он почти готов начать бета-тестирование, просто нужно еще несколько. – greatwolf