Commit 02168b678ccd8d663cd93fd41ca0873a920a0796

Thomas de Grivel 2024-02-27T18:21:08

readme

diff --git a/README.md b/README.md
index bedea37..844589d 100644
--- a/README.md
+++ b/README.md
@@ -320,6 +320,21 @@ really helpful when writing large programs that need to scale in the way
 of abstractions. Let the data flow in the code through visual types.
 
 
+#### Macros
+
+C3 macros are like Common Lisp macros with Elixir pattern-matching.
+
+Macros are like functions but start with `macro` instead of `fn` and
+their arguments do not get evaluated. However they get pattern matched
+and the full power of the pattern matcher is available for arguments
+destructuring. Use a map if you want named arguments. Use a list if you
+want &rest or &body arguments.
+
+When evaluated, a macro call returns a tag which is in turn evaluated
+in the calling site lexical environment. This allows for DSLs and custom
+control structures to be defined in C3.
+
+
 #### If, then, else.
 
 Conditionals in C3 are like in Ruby, for example :
@@ -346,21 +361,6 @@ block gets evaluated. If the condition is false and an `else` block is
 not provided, then `void` gets returned.
 
 
-#### Macros
-
-C3 macros are like Common Lisp macros with Elixir pattern-matching.
-
-Macros are like functions but start with `macro` instead of `fn` and
-their arguments do not get evaluated. However they get pattern matched
-and the full power of the pattern matcher is available for arguments
-destructuring. Use a map if you want named arguments. Use a list if you
-want &rest or &body arguments.
-
-When evaluated, a macro call returns a tag which is in turn evaluated
-in the calling site lexical environment. This allows for DSLs and custom
-control structures to be defined in C3.
-
-
 ### c3s
 
 Script interpreter. Works the same as ic3 but is not interactive.