Вы читаете свой журнал

Оживший юзерпик - Схемное

авг. 5, 2014

07:11 pm - Схемное

Previous Entry Редактировать запись Редактировать метки В избранное Поделиться Отслеживать Next Entry

А чем

`(1 2 ,(+ 1 2))
лучше, чем
(list 1 2 (+ 1 2))
?

Comments:

[User Picture]
From:lispnik
Date:5 Август 2014 19:16 (местное)
Удалить Spam Скрыть Заморозить Отслеживать
(Link)
Короче и нагляднее, особенно в случае генерации кода.
(Ответить) (Thread)
[User Picture]
From:jsn
Date:5 Август 2014 19:23 (местное)
Удалить Spam Скрыть Заморозить Отслеживать
(Link)
Особенно для `(1 2 (3 4 (5 (+ 6 ,(+ 6 7))) 8 9) 10) хорошо видно.

Ну кроме того, нетупая реализация может значительно быстрее делать quasiquote instantiation, чем звать толпу list-ов, вроде бы (not that it ever matters).
(Ответить) (Parent) (Thread)
[User Picture]
From:lispnik
Date:5 Август 2014 20:49 (местное)
Удалить Spam Скрыть Заморозить Отслеживать
(Link)
Ну да, в CL часть подсписков может быть даже константой (в стандарте запрещено результат модифицировать). Не знаю, есть ли такое ограничение в Scheme.
(Ответить) (Parent) (Thread)
From:tzirechnoy
Date:5 Август 2014 21:02 (местное)
Удалить Spam Скрыть Заморозить Отслеживать
(Link)
Ср.:
(list 'lambda '(op reg ) 
  (list 'let (list (list 'res (list 'member 'op ops)))
        (list 'if 'res 
              '(cadar res)
              (list 'cadar ops)
        )  ) )


 `(lambda (op reg)
          (let ((res (member op ,ops)))
             (if res (cadar res) (cadar ,ops)
             ) ) )
(Ответить) (Thread)
[User Picture]
From:tobotras
Date:5 Август 2014 21:08 (местное)
Редактировать Удалить Скрыть Заморозить Отслеживать
(Link)
Спасибо, убедительно!
(Ответить) (Parent) (Thread)

Mass Action

Групповое действие над комментариями: