?

Log in

No account? Create an account

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

Aug. 5th, 2014

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

Previous Entry Share Next Entry

А чем

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

Comments:

[User Picture]
From:lispnik
Date:August 5th, 2014 03:16 pm (UTC)
(Link)
Короче и нагляднее, особенно в случае генерации кода.
(Reply) (Thread)
[User Picture]
From:jsn
Date:August 5th, 2014 03:23 pm (UTC)
(Link)
Особенно для `(1 2 (3 4 (5 (+ 6 ,(+ 6 7))) 8 9) 10) хорошо видно.

Ну кроме того, нетупая реализация может значительно быстрее делать quasiquote instantiation, чем звать толпу list-ов, вроде бы (not that it ever matters).
(Reply) (Parent) (Thread)
[User Picture]
From:lispnik
Date:August 5th, 2014 04:49 pm (UTC)
(Link)
Ну да, в CL часть подсписков может быть даже константой (в стандарте запрещено результат модифицировать). Не знаю, есть ли такое ограничение в Scheme.
(Reply) (Parent) (Thread)
[User Picture]
From:tzirechnoy
Date:August 5th, 2014 05:02 pm (UTC)
(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)
             ) ) )
(Reply) (Thread)
[User Picture]
From:tobotras
Date:August 5th, 2014 05:08 pm (UTC)
(Link)
Спасибо, убедительно!
(Reply) (Parent) (Thread)