Size: a a a

2020 March 01

AE

Alexey Egorov in Lisp Forever
Sokolov Andrew
Мне вот сегодня впервые смерджил пр в опенсорс
Ого найс грацы.
источник

SA

Sokolov Andrew in Lisp Forever
new feature: CMUCL-style block compilation support has been added, allowing whole program optimization. It has been documented in a new section of the manual entitled "Advanced Compiler Use and Efficiency Hints". In particular, users of block compilation will find a large speedup for numerical code, as functions which call or return floating point values will keep everything unboxed.
источник

SA

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

V(

Vλadimir (Hawthorne the Toolmaker) in Lisp Forever
Sokolov Andrew
ебать
действительно
источник

AE

Alexey Egorov in Lisp Forever
Sokolov Andrew
new feature: CMUCL-style block compilation support has been added, allowing whole program optimization. It has been documented in a new section of the manual entitled "Advanced Compiler Use and Efficiency Hints". In particular, users of block compilation will find a large speedup for numerical code, as functions which call or return floating point values will keep everything unboxed.
Ооо найс.
источник

AE

Alexey Egorov in Lisp Forever
Какие молодцы.
источник

AE

Alexey Egorov in Lisp Forever
Я ещё не читал свежих релизнотов.
источник

AE

Alexey Egorov in Lisp Forever
Это 2.0.2 же?
источник

ХЛ

Хороший Лисичко in Lisp Forever
Немного философии. Что значит быть лиспом? Достаточно ли представлять код в sexpr'ах, или требуется что-то ещё?
источник

PG

Pïg Grëënëst in Lisp Forever
гомоиконность, наверно
источник

V(

Vλadimir (Hawthorne the Toolmaker) in Lisp Forever
Гомоиконность заставит иметь делиметры (скобки) -> sexps -> лисп
источник

ХЛ

Хороший Лисичко in Lisp Forever
Vλadimir (Hawthorne the Toolmaker)
Гомоиконность заставит иметь делиметры (скобки) -> sexps -> лисп
Т.Е. быть лиспом = быть гомоиконным?
источник

V(

Vλadimir (Hawthorne the Toolmaker) in Lisp Forever
очень сложно им не быть, будучи гомоиконным
источник

ХЛ

Хороший Лисичко in Lisp Forever
Vλadimir (Hawthorne the Toolmaker)
очень сложно им не быть, будучи гомоиконным
Но возможно?) Тогда что ещё требуется?
источник

V(

Vλadimir (Hawthorne the Toolmaker) in Lisp Forever
источник

V(

Vλadimir (Hawthorne the Toolmaker) in Lisp Forever
В условном пистоне сегодня будут пункты с 1 по 5 и ~половинка от 9. Имплаинг ты вкрутил туда гомоиконность - это с большой вероятностью потянет 6, 8 и 7. Результат до степени смешения будет похож на лисп.
источник

PG

Pïg Grëënëst in Lisp Forever
посмотри на Tcl, Red, Rebol
источник

SA

Sokolov Andrew in Lisp Forever
а зачем
источник

SA

Sokolov Andrew in Lisp Forever
тебе ответ на этот вопрос?
источник

a

akater in Lisp Forever
Vλadimir (Hawthorne the Toolmaker)
День добрый и вопрос вам как эксперту.
Есть вот такая форма которая мне очень нравится:

(defmacro mk-calculation (plist &body body)
 `(let ((params ,plist)
        (runner-string (quote ,@body))
        (status 'new))
    (labels ((all-params () params)
             (get-param (key) (getf params key))
             (set-param (key val) (setf (getf params key) val))
             (get-status () status)
             (set-status (sym) (setf status sym)))
      (lol:dlambda
       (:get (key) (get-param key))
       (:status () status)
       (:show-runner () runner-string)
       (:run () (progn ,@body
                       (setf status 'finished)))
       (t () (cons (cons 'calculation status) (list params)))))))


А именно: замыкание вокруг списка параметров (любых там), который должен быть обработан команой :run, в принципе один раз и с кучей сайд-эффектов. Чтобы можно было сериализовать и перезапускать это чудо, в runner-string пишется quote еще не скомпилированного body; в labels опред. сеттеры для стэйта этого_конкретного_объекта.

А вопрос, почему такой подход называют "quick AND dirty", и какой профит можно ожидать от использования CLOS+MOP вместо него?
• warn:
(quote ,@body)

quote по стандарту позволяет иметь в себе только одно подвыражение. Из-за этого, в частности, вызов с :show-runner будет ошибкой если в body 0 форм или более 1 формы.

• Стилистическое замечание:
Можно просто (:run () ,@body (setf status 'finished)) (это позволит прозрачно пропихнуть declare-форму через body, например)

• Перезапускать можно что угодно, с помощью conditions. Но хочется записывать состояние в долгосрочную память, да?

…И я не назвал бы себя экспертом.
источник