Size: a a a

2020 July 16

SA

Sokolov Andrew in Lisp Forever
я забыл как там но это подстава из серии
#DEFINE if(a) if(rand())
источник

SA

Sokolov Andrew in Lisp Forever
или что то подобное
источник

AE

Alexey Egorov in Lisp Forever
Vyacheslav Mikushev
То есть, ты не сможешь сгенерить код, который должен читаться раньше.
Так и вышло.
источник

AE

Alexey Egorov in Lisp Forever
Sokolov Andrew
оно так работает?
Не работает.
источник

AE

Alexey Egorov in Lisp Forever
Сосание ёбаное.
источник

AE

Alexey Egorov in Lisp Forever
(defmacro puque (&rest objs)
 `(+ ,@(loop :for o :in objs :collect `[,o.a])))
источник

AE

Alexey Egorov in Lisp Forever
Попробовал вот такое и конечно же соснул.
источник

AE

Alexey Egorov in Lisp Forever
Надо придумать, как это пофиксить.
источник

SA

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

SA

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

AE

Alexey Egorov in Lisp Forever
источник

SA

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

SA

Sokolov Andrew in Lisp Forever
(defparameter *two-arg-infix-functions* #(+ - * / (^ expt) < > <= >= = /=
                                         eq eql equal eqluap char= char/=
                                         string= string/= mod rem (as coerce)))

(defmacro with-2arg-infix-syntax (single-form)
 (labels ((find-subs (obj)
            (loop :for name :across *two-arg-infix-functions*
                  :if (eql name obj)
                    :do (return name)
                  :else
                    :if (and (listp name) (eql (car name) obj))
                      :do (return (cadr name))
                  :finally (return 0)))
          (map-transform (object)
            (cond ((and (listp object)
                      (= 3 (length object))
                      (not (eql 0 (find-subs (second object)))))
                   `(,(find-subs (second object)) ,(first object) ,(third object)))
                  ((listp object)
                   (mapcar #'map-transform object))
                  (t object))))
   (map-transform single-form)))
источник

SA

Sokolov Andrew in Lisp Forever
CL-USER> (macroexpand '(with-2arg-infix-syntax (progn (if (a = b)
                                                         (a + b)
                                                         (a mod b))
                                                     (print ((3 ^ 4) as 'float)))))
(PROGN
(IF (= A B)
    (+ A B)
    (MOD A B))
(PRINT (COERCE (3 ^ 4) 'FLOAT)))
источник

SA

Sokolov Andrew in Lisp Forever
(defmacro with-[]access-syntax (single-form))
vector[15] -> (aref vector 15)
источник

SA

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

SA

Sokolov Andrew in Lisp Forever
а да, если вдруг кому то понравится такая хуйня то вот вам еще смищная идея
источник

SA

Sokolov Andrew in Lisp Forever
(defmacro with-sugar (sugars &body body)
 (if sugars
     `(,(car sugars)
       (with-sugar ,(cdr sugars) ,@body))
     `(progn ,@body)))
источник

SA

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

SA

Sokolov Andrew in Lisp Forever
с моральной точки зрения это не хуже чем iterate
источник