Регистрация | Войти
Lisp — программируемый язык программирования
RSS
Двусвязные списки под BSD лицензией
den73 - 26.04.2017 23:44, Сообщений - 14
Где есть? Нужно, чтобы было более-менее производительно, но не слишком заморочено, т.е., попросту говоря, без CLOS. 

А то я взял dlist и обнаружил, что уже не один час потрачен на допиливание совершенно необходимых вещей, например, 
не было ф-ии удаления элемента из списка. 

На всякий случай, мой код здесь, но вам он вряд ли пригодится - я завязался на budden-tools и кое-что русифицировал. 

[#]
Где есть? Нужно, чтобы было более-менее производительно, но не слишком заморочено, т.е., попросту говоря, без CLOS. 

Самому интересно, я вот dlist думал брать если понадобиться.

На всякий случай, мой код здесь, но вам он вряд ли пригодится - я завязался на budden-tools и кое-что русифицировал. 

Денис, мне иногда сложно тебя понимать. Вот ты допилил dlist, это круто и полезно. Почему бы просто не сделать это независимо?
Допустим автор оценил бы твой фикс (может быть он и не будет подавать признаков жизни, но я о концепции) - но раз появилась такая крутая зависимость от budden-ttols, разумеется придется обойтись.
По-моему это не конструктивно.
Иль ты двигаешь budden-tools в качестве нового стандарта?
LinkFly - 28.04.2017 14:52
[#] Ответ на комментарий от LinkFly 28.04.2017 14:52
Я двигаю Яр, а Яру нужны русифицированные библиотеки. Из budden-tools использована только perga - это я могу выпилить минуты за три, но русификацию так просто уже не выпилить, в т.ч русскоязычные комментарии. Вряд ли я возьму на себя труд дерусифицирования :) Допустим, автор проснётся. Будет ли ему разница, по какой причине он не может принять мой патч - по причине budden-tools или по причине Русского языка? 

Я вот кстати думаю, может быть набор русифицированных библиотек для CL мог бы иметь какой-то смысл для преподавания, хотя вряд ли буду этим системно заниматься. Тем временем у dlist обнаружилась одна вещь, которая мне не понравилась. Большинство ф-й, принимающих dlist, могут принимать вместо него nil. 

Я вот понимаю, когда nil - это тоже (обычный) list. Здесь есть смысл, ведь хвост обычного list - это всегда list. 

А вот в библиотеке dlist хвост двусязного списка - это никогда не двусвязный список. dlist состоит из головы (собственно dlist) с указателями на голову и хвост, и узлов (dcons). И особо обрабатывается аномальный случай, когда у списка нет ни головы, ни узлов. Мне кажется куда как более правильным изображать пустой список головой без узлов с нулевыми началом и концом. 


den73 - 29.04.2017 16:55
[#] Ответ на комментарий от den73 29.04.2017 16:55
В общем, буду переделывать, чтобы nil не воспринимался как пустой список.
den73 - 29.04.2017 20:13
[#] Ответ на комментарий от den73 29.04.2017 20:13
Выкинул полиморфизм, к-рый мне не нравился. Правда, отпала и часть полезного. Результат здесь, тесты проходят, описание надо ещё подправить. Старый свой форк, видимо, удалю в ближайшие дни, чтобы не мешался. Так что нужны кому мои добавки - берите, пока не поздно. 
den73 - 30.04.2017 01:10
[#] Ответ на комментарий от den73 29.04.2017 20:13
>В общем, буду переделывать, чтобы nil не воспринимался как пустой список.

To archimag: Похоже сайт надо закрывать)
vi1 - 06.05.2017 01:27
[#] Ответ на комментарий от vi1 06.05.2017 01:27
LOL
archimag - 06.05.2017 01:54
[#] Ответ на комментарий от den73 29.04.2017 16:55
read - "читало", write - "писало", eval - "считало"
руссифицированный лисп, бессмысленный и беспощадный
но, возможно, я преувеличиваю. 
и заменой "direction" на "Направление" все и ограничится.

не считать nil пустым списком это инновационно
с другой стороны CL имеет столько "днищ", которые еще можно пробить
с низу, все одно, не постучат



mvk - 09.05.2017 01:51
[#] Ответ на комментарий от mvk 09.05.2017 01:51
Закрывать - не закрывать, а вот модерировать идиотские комментарии стоило бы, хотя понятно, что никто этим заниматься не будет. Подумайте о том, почему в стандарте CL массив длины 0 представлен не nil -ом, и напишите что-нибудь саркастическое на эту тему в адрес авторов стандарта. 

den73 - 11.05.2017 12:47
[#] Ответ на комментарий от den73 11.05.2017 12:47
Бог с вами. Сее не сарказм. Cet diagnostic sociologique. Относитесь к сему проще.

Касательно стандарта. Массив либо есть, и, тогда он - true,  длиной от нуля до окраин галактики,и с ним возможно что-либо делать. Либо его нет, и сее  - nil, i.e. - делать нечего

Опять же, касательно длины. В JS существует:
   var aa = new Array()
   aa.length
   > 0
   aa['aa'] = "нечто"
   aa['aaa'] = "нечто"

Вы видите суслика ? 
    aa.length
    > 0
Нет!
А он есть...
    aa["aa"]
    > "нечто"

Как то так...





mvk - 12.05.2017 01:03
[#] Ответ на комментарий от mvk 12.05.2017 01:03
Все таки здравомыслящие люди есть, слава Богу)
vi1 - 12.05.2017 17:46
[#] Ответ на комментарий от mvk 12.05.2017 01:03
Я не собираюсь это обсуждать. Нравится dlist - пользуйтесь (правда, там нечем пользоваться, по сути). Не нравится - не пользуйтесь. Ставить диагнозы мне - это пустое занятие. 
den73 - 12.05.2017 23:24
[#] Ответ на комментарий от den73 12.05.2017 23:24
И это выглядит не вполне красиво - я хоть что-то сделал, а вы только диагнозы ставите. Если хотите быть полезным и вам так обязательно нужно, чтобы отсутствие было nil-ом - возьмите и допилите этот dlist до более полезного состояния. На данный момент это не библиотека, а заготовка. В отличие от него, в моём форке хотя бы можно вставить/удалить элемент в/из списка. Или укажите, где есть более полноценная библиотека с реализацией двухсвязных списков. Думаю, что на практике вы ничего делать не будете и вам это всё не нужно - а вот языком почесать - это пожалуйста. 

den73 - 12.05.2017 23:29
[#] Ответ на комментарий от den73 12.05.2017 23:29
А вот это смотрел кто-нибудь: https://github.com/mfiano/doubly-linked-list ?
LinkFly - 22.05.2017 22:06
[#] Ответ на комментарий от LinkFly 22.05.2017 22:06
7 дней назад. Лучше, чем dlist тем, что дизайн не переусложнён (нет ненужного полиморфизма). Но маловато (нет итератора или маппера по элементам). Также плохо то, что использует методы для вставки эл-тов. 
den73 - 23.05.2017 16:26
@2009-2013 lisper.ru