1
0
mirror of https://github.com/jbranchaud/til synced 2026-01-04 23:58:01 +00:00

Add Expanding Macros as a clojure til.

This commit is contained in:
jbranchaud
2015-04-12 16:38:47 -05:00
parent 45c6143c93
commit 55f96890e6
2 changed files with 25 additions and 0 deletions

View File

@@ -9,6 +9,7 @@ smart people at [Hashrocket](http://hashrocket.com/).
### clojure
- [Expanding Macros](clojure/expanding-macros.md)
- [Quick Clojure Docs](clojure/quick-clojure-docs.md)
- [Specify the Directory of a Shell Command](clojure/specify-the-directory-of-a-shell-command.md)
- [Splitting On Whitespace](clojure/splitting-on-whitespace.md)

View File

@@ -0,0 +1,24 @@
# Expanding Macros
Macros are an important part of Clojure's syntax. They allow you to write
cleaner, terser, more expressive code.
Though sometimes you may want to inspect the
clojure code that is actually produced by a particular macro. The
`macroexpand` function allows for just this.
For instance, if you have a snippet of code using the `->>` operator:
```clojure
(->> 4 (+ 1) (- 2) (* 3))
```
You can wrap that form with the `macroexpand` function to see the form that
is ultimately evaluated:
```clojure
> (macroexpand (->> 4 (+ 1) (- 2) (* 3)))
; (* 3 (- 2 (+ 1 4)))
```
It doesn't buy us much in a contrived example like this, but can prove
useful for better understanding clojure and the more complex code we write.