Size: a a a

2020 October 20

SA

Sokolov Andrew in Lisp Forever
Я и сам напишу
источник

KS

Kamiλ Shakirov in Lisp Forever
источник

YK

Yaroslav Khnygin in Lisp Forever
партийное задание: сделать клон этой штуки с лиспом вместо самопального микроскрипта https://www.youtube.com/watch?v=RfR7PQhYnJ8
источник
2020 October 21

SA

Sokolov Andrew in Lisp Forever
блин можете хейтить сколько хотите но дот синтаксис реально облегчает написание больших структур ппц
источник

a

akater in Lisp Forever
Sokolov Andrew
блин можете хейтить сколько хотите но дот синтаксис реально облегчает написание больших структур ппц
У меня нету никакого хейта, но по-моему он ничего не облегчает.  Если есть макрос, который позволяет записывать применение фкнкций постфиксно, то не вижу вообще никакой разницы.
источник

SA

Sokolov Andrew in Lisp Forever
мм я про слоты
источник

SA

Sokolov Andrew in Lisp Forever
(defun rotate-right (node tree)
 "Rotates right at the node; resetes the tree root if needed"
 (with-snames
   (with-slots (parent left right) node
     (let ((new left))
       (setf left new.right)
       (when new.right
         (setf new.right.parent node))
       (setf new.parent parent)
       (cond ((not parent)
              (setf tree.root new))
             ((eq node parent.right)
              (setf parent.right new))
             (t (setf parent.left new)))
       (setf new.right node
             parent new)))))
источник

SA

Sokolov Andrew in Lisp Forever
как бы
источник

SA

Sokolov Andrew in Lisp Forever
 (when new.right
     (setf new.right.parent node))

было ужасно
источник

SA

Sokolov Andrew in Lisp Forever
до этого
источник

SA

Sokolov Andrew in Lisp Forever
я писал писал и понял что чет оч тяжко
источник

a

akater in Lisp Forever
Sokolov Andrew
(defun rotate-right (node tree)
 "Rotates right at the node; resetes the tree root if needed"
 (with-snames
   (with-slots (parent left right) node
     (let ((new left))
       (setf left new.right)
       (when new.right
         (setf new.right.parent node))
       (setf new.parent parent)
       (cond ((not parent)
              (setf tree.root new))
             ((eq node parent.right)
              (setf parent.right new))
             (t (setf parent.left new)))
       (setf new.right node
             parent new)))))
`(setf (parent (right new)) node)` прям настолько хуже `(setf new.right.parent node)`?

Я еще подозреваю, что если это не read синтаксис, то в имплементации наверняка есть баг, который будет долго не замечен.
источник

a

akater in Lisp Forever
Sokolov Andrew
 (when new.right
     (setf new.right.parent node))

было ужасно
Я б например не писал
(when new.right 
 (setf new.right.parent node))


Я б писал
(swhen (right new)
 (setf (parent it) node))


Вот хоть it, например, с этими точками будет правильно работать?
источник

SA

Sokolov Andrew in Lisp Forever
ваще то будет
источник

SA

Sokolov Andrew in Lisp Forever
оно просто идет по дереву и рекурсивно заменяет штуки с точками на нестед слоты
источник

SA

Sokolov Andrew in Lisp Forever
с твоими функциями проблема в том что
источник

SA

Sokolov Andrew in Lisp Forever
по дефолту такие не определеяются
источник

SA

Sokolov Andrew in Lisp Forever
то есть для структур я хз
источник

SA

Sokolov Andrew in Lisp Forever
там кажется хоть какой то конк нейм да укажи
источник

a

akater in Lisp Forever
Sokolov Andrew
оно просто идет по дереву и рекурсивно заменяет штуки с точками на нестед слоты
Какому еще дереву?
источник