Size: a a a

2020 February 20

AE

Alexey Egorov 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
Сделайте им боа конструкторы всем)
источник

AE

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

AE

Alexey Egorov in Lisp Forever
Кроме каламбура на удава.
источник

SA

Sokolov Andrew in Lisp Forever
классы наверное дебажить проще да
источник

SA

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

a

akater in Lisp Forever
(defmethod div ((matrix float2x2) scalar)
 (make-float2x2
  (map 'vector
       (ax:rcurry #'/ scalar)
       (in-vec matrix))))

Почему бы не произвести одно деление в начале и мапить умножение, если уж речь якобы о float'ах (хотя на самом деле нет, и в итоге непонятно, какой intent)?
источник

a

akater in Lisp Forever
Определять деление как метод это тоже вызывает вопросы. Все методы совершенно одинаковые, и в мультилинейной алгебре над одним полем делить разными способами особо нет возможности.
источник

AE

Alexey Egorov in Lisp Forever
Хм, хорошая идея.
источник

AE

Alexey Egorov in Lisp Forever
akater
(defmethod div ((matrix float2x2) scalar)
 (make-float2x2
  (map 'vector
       (ax:rcurry #'/ scalar)
       (in-vec matrix))))

Почему бы не произвести одно деление в начале и мапить умножение, если уж речь якобы о float'ах (хотя на самом деле нет, и в итоге непонятно, какой intent)?
Вот это.
источник

AE

Alexey Egorov in Lisp Forever
akater
Определять деление как метод это тоже вызывает вопросы. Все методы совершенно одинаковые, и в мультилинейной алгебре над одним полем делить разными способами особо нет возможности.
Дело в том, что хочется для векторов тоже иметь такие же методы.
источник

AE

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

a

akater in Lisp Forever
Alexey Egorov
Дело в том, что хочется для векторов тоже иметь такие же методы.
Почему не что-то в духе
(declaim (inline mul))

(defun mul (scalar array)
 (declare (type single-float scalar))
 (map-into (make-array (array-dimensions array)
                       :element-type (array-element-type array))
           (lambda (x)
             (declare (type single-float x))
             (the single-float (* scalar x)))
           array))

(defun div (array scalar)
 (declare (type single-float scalar))
 (mul (the single-float (/ scalar))
      array))

?

(Можно получше специализировать на float'ах потом, суть вопроса не в этом.)
источник

AE

Alexey Egorov in Lisp Forever
akater
Почему не что-то в духе
(declaim (inline mul))

(defun mul (scalar array)
 (declare (type single-float scalar))
 (map-into (make-array (array-dimensions array)
                       :element-type (array-element-type array))
           (lambda (x)
             (declare (type single-float x))
             (the single-float (* scalar x)))
           array))

(defun div (array scalar)
 (declare (type single-float scalar))
 (mul (the single-float (/ scalar))
      array))

?

(Можно получше специализировать на float'ах потом, суть вопроса не в этом.)
Да, так намного лучше действительно!
источник

a

akater in Lisp Forever
Я согласен, что с этим все хреново. Поэтому я даже не смотрю в сторону чего угодно с многомерными массивами пока не будет приличных инструментов (я пытаюсь один написать, но это непросто, и время не всегда есть). В частности, map-into и map требуют одномерный массив.
источник

a

akater in Lisp Forever
Alexey Egorov
Хм, хорошая идея.
Это скорее не идея, а просто следствие педантичного взгляда на предметную область: не существует никакого деления в векторных пространствах, существует умножение на скаляр. Поэтому само наличие операции div для таких объектов, которые тут есть, вызывает на самом деле некоторую тревогу на тему того, что она концептуально бессмысленная.
источник

AE

Alexey Egorov in Lisp Forever
Ну, это понятно.
источник