#summary Using macros.
#labels Usage

= Macros =

Macros are an extension to the core Cat language, called MetaCat. The Cat interpreter will parse and load macros, but will not apply them unless instructed to using the '#m' or `#o` meta-command.

The standard library macros can be found at 

== For more information ==

For more information on MetaCat macros see http://www.cat-language.com/metacat.html.

== Examples ==

Some example of Meta-cat macros:

{{{
macro { swap swap } => { }
macro { dup pop } => { }
macro { quote apply } => { }
macro { $b $a swap } => { $a $b }
macro { $a pop } => { }
macro { [$A] apply } => { $A }
macro { $a quote } => { [$a] }
macro { $b [$A] dip } => { $A $b }
macro { true [$B] [$A] if } => { $B }
macro { false [$B] [$A] if } => { $A }
macro { [$B] [$A] compose } => { [$B $A] }
macro { map $a map } => { $a compose map }
macro { unit $a filter } => { $a apply [unit] [pop nil] if }
macro { unit $a map } => { $a apply unit }
macro { unit $b $a fold } => { $a apply }
}}}

The standard library macros are defined at: http://cat-language.googlecode.com/svn/trunk/macros.cat