Size: a a a

2021 June 26

SA

Sokolov Andrew in Lisp Forever
но вопрос еще будут ли у него такие значения
источник

a

akater in Lisp Forever
loop хорошо оптимизирован, нет никаких концептуальных препятствий компилировать его деструктуризацию в очень эффективный код.  Я не проверял, но это в любом случае нормальный стиль, и его стоит рекомендовать.
источник

SA

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

SA

Sokolov Andrew in Lisp Forever
и например destructuring-bind
источник

SA

Sokolov Andrew in Lisp Forever
это та еще хуйня
источник

a

akater in Lisp Forever
Ну не, отсутствие проверок в таких случаях это харам по-моему.
источник

SA

Sokolov Andrew in Lisp Forever
(defun make-predicate (&rest args)
 (lambda (x)
   (loop :for (tag val . rst) := args :then rst :while tag
         :always (equal (getf x tag) val))))
источник

a

akater 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
(SB-LOOP::LOOP-DESETQ (A B . RST) '(1 2 3 4 5 6 7 8))
источник

SA

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

a

akater in Lisp Forever
У меня в планах делать паттерн-матчинг, желательно на основе trivia, но есть вещи, которые требуют более детальной работы чем то что там (паттерны в последовательностях).

Но сейчас у меня в приоритете среда разработки, а это елисп.
источник

a

akater in Lisp Forever
Я это и имел в виду, когда говорил, что loop в sbcl весьма усердно компилируется.  Я сравнивал там с series, он был пусть чуть-чуть, но лучше.
источник

SA

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

SA

Sokolov Andrew in Lisp Forever
(defun make-predicate (&rest args)
 (lambda (x)
   (loop :for (tag val) :on args :by #'cddr
         :always (equal (getf x tag) val))))
источник

SA

Sokolov Andrew in Lisp Forever
все my final form
ну кроме этих самых историй с дефолтными значениями
источник

SA

Sokolov Andrew in Lisp Forever
@sixparams  чекай 4 строчки
источник