Ho visto progn
essere usato parecchio mentre sfoglio i file di configurazione degli utenti Emacs esperti. Ho trovato questa bella spiegazione diprogn
, ma ciò di cui sono davvero curioso è, qual è il vantaggio di usare questa funzione? Prendi ad esempio questo frammento (tratto dalla configurazione di Sacha Chua ):
(use-package undo-tree
:defer t
:ensure t
:diminish undo-tree-mode
:config
(progn
(global-undo-tree-mode)
(setq undo-tree-visualizer-timestamps t)
(setq undo-tree-visualizer-diff t)))
C'è qualche grande differenza tra la configurazione sopra e questa?
(use-package undo-tree
:defer t
:ensure t
:diminish undo-tree-mode
:config
(global-undo-tree-mode)
(setq undo-tree-visualizer-timestamps t)
(setq undo-tree-visualizer-diff t))
Sento che il primo esempio è in qualche modo più pulito, anche se ha più sintassi, e la mia intuizione è che potrebbe esserci qualche tipo di aumento delle prestazioni dall'uso progn
, ma non ne sono sicuro. Grazie per eventuali approfondimenti!
progn
è necessario: emacs.stackexchange.com/questions/39172/…
use-package
avvolgerà unprogn
tuo: config form se manca. Provalo: puoi mettere il punto alla fine di a(use-package ...)
e chiamareM-x pp-macroexpand-last-sexp
per vedere come viene espansa la macro. Vedrai che è identico per questi due esempi.