Add an appendix on call-with-* style macros for later investigation
This commit is contained in:
parent
71a1ac3fb7
commit
1fa140fa79
|
@ -2175,6 +2175,31 @@ Item 5 is ?
|
||||||
(HOW DO YOU DO ?)
|
(HOW DO YOU DO ?)
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
* [[http://random-state.net/log/3390120648.html][Why I like CALL-WITH-* style in macros]]
|
||||||
|
:PROPERTIES:
|
||||||
|
:CUSTOM_ID: sec:call-with-macros
|
||||||
|
:END:
|
||||||
|
|
||||||
|
Listing [[lst]] The post [[https://lists.gnu.org/archive/html/emacs-devel/2023-12/msg00683.html][João Távora: permanently fix org breakage during builds]]
|
||||||
|
links to the origin of the code in listing [[lst:call-with-macros]].
|
||||||
|
|
||||||
|
BUG: make a concrete ~CALL-WITH-*~ macro example.
|
||||||
|
|
||||||
|
#+caption[Abstract "CALL-WITH-*" macro example]:
|
||||||
|
#+caption: Abstract ~CALL-WITH-*~ macro example.
|
||||||
|
#+caption: with variable clauses, exit clauses, and a body.
|
||||||
|
#+name: lst:call-with-macros
|
||||||
|
#+begin_src emacs-lisp -n :eval never
|
||||||
|
(defmacro with-foo ((foo) &body body)
|
||||||
|
`(call-with-foo (lambda (,foo) ,@body)))
|
||||||
|
|
||||||
|
(defun call-with-foo (function)
|
||||||
|
(let (foo)
|
||||||
|
(unwind-protect
|
||||||
|
(funcall function (setf foo (get-foo)))
|
||||||
|
(when foo (release-foo foo)))))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
* Local variables :noexport:
|
* Local variables :noexport:
|
||||||
|
|
||||||
# Emacs looks for "Local variables:" after the last "newline-formfeed".
|
# Emacs looks for "Local variables:" after the last "newline-formfeed".
|
||||||
|
|
Loading…
Reference in New Issue