Eu tenho visto progn
bastante uso enquanto navego nos arquivos de configuração de usuários experientes do Emacs. Encontrei essa boa explicação deprogn
, mas o que realmente me interessa é: qual é o benefício de usar essa função? Tomemos, por exemplo, este trecho (retirado da configuração do 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)))
Existe alguma diferença importante entre a configuração acima e essa?
(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))
Eu sinto que o primeiro exemplo é de alguma forma mais limpo, embora tenha mais sintaxe, e minha intuição é que pode haver algum tipo de aumento de desempenho no uso progn
, mas não tenho certeza. Obrigado por qualquer insight!
progn
é necessário: emacs.stackexchange.com/questions/39172/…
use-package
envolverá osprogn
formulários: config se ele estiver ausente. Experimente: você pode colocar um ponto no final de um(use-package ...)
e ligarM-x pp-macroexpand-last-sexp
para ver como a macro é expandida. Você verá que é idêntico para esses dois exemplos.