Size: a a a

2020 August 24

a

akater in Lisp Forever
Alexey Egorov
Они кажется концептуально сложнее, чем throw/catch.
Видимо, это очень субъективно, но рестарты мне куда понятнее чем throw/catch: там прямо в коде написано, что произойдет в каждом случае [из описаных], а в throw/catch не написано.  Вдобавок еще там широкий extent — я это имел в виду, когда сказал «две формы»: они могут быть в разных местах, throw м.б. лексически не виден из catch.

Широкий extent это иногда полезно, я и сам иногда пишу весьма динамически действующие макросы, но ошибки это по-моему не то место, где оно того стоит, и от использования handler-bind ничего не теряется, а только приобретается.  Так что не вижу смысла в catch/throw.
источник

AE

Alexey Egorov in Lisp Forever
akater
Видимо, это очень субъективно, но рестарты мне куда понятнее чем throw/catch: там прямо в коде написано, что произойдет в каждом случае [из описаных], а в throw/catch не написано.  Вдобавок еще там широкий extent — я это имел в виду, когда сказал «две формы»: они могут быть в разных местах, throw м.б. лексически не виден из catch.

Широкий extent это иногда полезно, я и сам иногда пишу весьма динамически действующие макросы, но ошибки это по-моему не то место, где оно того стоит, и от использования handler-bind ничего не теряется, а только приобретается.  Так что не вижу смысла в catch/throw.
Да, видимо это и правда очень субъективно.
источник

SA

Sokolov Andrew in Lisp Forever
а мне вообще больше нравится концепт вида — возвращать ошибки а не вызывать их)
источник

SA

Sokolov Andrew in Lisp Forever
ну вызывать в самом конце
источник
2020 August 25

SD

Sergey D in Lisp Forever
Чего бы incf не принимать множество пар, как это делает setf?..
источник

AE

Alexey Egorov in Lisp Forever
Sergey D
Чего бы incf не принимать множество пар, как это делает setf?..
Потому что у него есть значение дельты по умолчанию.
источник

SD

Sergey D in Lisp Forever
Alexey Egorov
Потому что у него есть значение дельты по умолчанию.
Понял, спасибо
источник

SA

Sokolov Andrew in Lisp Forever
zap ftw
источник
2020 August 26

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
берем такую шнягу
(defun fixS (g)
 (lambda (v)
   (funcall g (fixS g) v)))
источник

SA

Sokolov Andrew in Lisp Forever
и с помощью нее делаем так
источник

SA

Sokolov Andrew in Lisp Forever
CL-USER> (funcall
          (fixs
            (lambda (f n)
              (if (zerop n)
                  1
                  (* n (funcall f (1- n))))))
         10)
3628800 (22 bits, #x375F00)
источник

SA

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

SA

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

SA

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

SA

Sokolov Andrew in Lisp Forever
фокус номер два, к делу не имеющий отношения но тоже классный
можно прочитать вот тут
https://stevelosh.com/blog/2016/08/playing-with-syntax/
источник

V(

Vλadimir (Hawthorne ... in Lisp Forever
А я закрыл гештальт насмотревшись на имитацию монад в лиспе. Как  бы понял зачем они нужны и не понял тоже, но остался доволен
источник