Где есть? Нужно, чтобы было более-менее производительно, но не слишком заморочено, т.е., попросту говоря, без CLOS.
А то я взял dlist и обнаружил, что уже не один час потрачен на допиливание совершенно необходимых вещей, например, не было ф-ии удаления элемента из списка.
На всякий случай, мой код
здесь, но вам он вряд ли пригодится - я завязался на budden-tools и кое-что русифицировал.
>
Где есть? Нужно, чтобы было более-менее производительно, но не слишком заморочено, т.е., попросту говоря, без CLOS.
Самому интересно, я вот dlist думал брать если понадобиться.
> На всякий случай, мой код здесь, но вам он вряд ли пригодится - я завязался на budden-tools и кое-что русифицировал.
Денис, мне иногда сложно тебя понимать. Вот ты допилил dlist, это круто и полезно. Почему бы просто не сделать это независимо?Допустим автор оценил бы твой фикс (может быть он и не будет подавать признаков жизни, но я о концепции) - но раз появилась такая крутая зависимость от budden-ttols, разумеется придется обойтись.
По-моему это не конструктивно.
Иль ты двигаешь budden-tools в качестве нового стандарта?
Я двигаю Яр, а Яру нужны русифицированные библиотеки. Из budden-tools использована только perga - это я могу выпилить минуты за три, но русификацию так просто уже не выпилить, в т.ч русскоязычные комментарии. Вряд ли я возьму на себя труд дерусифицирования :) Допустим, автор проснётся. Будет ли ему разница, по какой причине он не может принять мой патч - по причине budden-tools или по причине Русского языка?
Я вот кстати думаю, может быть набор русифицированных библиотек для CL мог бы иметь какой-то смысл для преподавания, хотя вряд ли буду этим системно заниматься. Тем временем у dlist обнаружилась одна вещь, которая мне не понравилась. Большинство ф-й, принимающих dlist, могут принимать вместо него nil.
Я вот понимаю, когда nil - это тоже (обычный) list. Здесь есть смысл, ведь хвост обычного list - это всегда list.
А вот в библиотеке dlist хвост двусязного списка - это никогда не двусвязный список. dlist состоит из головы (собственно dlist) с указателями на голову и хвост, и узлов (dcons). И особо обрабатывается аномальный случай, когда у списка нет ни головы, ни узлов. Мне кажется куда как более правильным изображать пустой список головой без узлов с нулевыми началом и концом.
В общем, буду переделывать, чтобы nil не воспринимался как пустой список.
Выкинул полиморфизм, к-рый мне не нравился. Правда, отпала и часть полезного. Результат
здесь, тесты проходят, описание надо ещё подправить. Старый свой форк, видимо, удалю в ближайшие дни, чтобы не мешался. Так что нужны кому мои добавки - берите, пока не поздно.
>В общем, буду переделывать, чтобы nil не воспринимался как пустой список.
To archimag: Похоже сайт надо закрывать)
read - "читало", write - "писало", eval - "считало"руссифицированный лисп, бессмысленный и беспощадный
но, возможно, я преувеличиваю.
и заменой "direction" на "Направление" все и ограничится.
не считать nil пустым списком это инновационно
с другой стороны CL имеет столько "днищ", которые еще можно пробить
с низу, все одно, не постучат
Закрывать - не закрывать, а вот модерировать идиотские комментарии стоило бы, хотя понятно, что никто этим заниматься не будет. Подумайте о том, почему в стандарте CL массив длины 0 представлен не nil -ом, и напишите что-нибудь саркастическое на эту тему в адрес авторов стандарта.
Бог с вами. Сее не сарказм. Cet diagnostic sociologique. Относитесь к сему проще.
Касательно стандарта. Массив либо есть, и, тогда он - true, длиной от нуля до окраин галактики,и с ним возможно что-либо делать. Либо его нет, и сее - nil, i.e. - делать нечего
Опять же, касательно длины. В JS существует:
var aa = new Array()
aa.length
> 0
aa['aa'] = "нечто"
aa['aaa'] = "нечто"
Вы видите суслика ?
aa.length
> 0
Нет!
А он есть...
aa["aa"]
> "нечто"
Как то так...