<?xml version='1.0'?>
-<expr>
- <defun fname="temp">
- <args><const type="symbol">x</const><const type="symbol">y</const></args>
- <add><variable vname="x"/><variable vname="y"/></add>
+<expr xmlns="http://www.m17n.org/MIM">
+ <defun fname="factorial">
+ <args><fixed vname="x"/></args>
+ <if><lt><varref vname="x"/><integer>2</integer></lt>
+ <varref vname="x"/>
+ <mul>
+ <varref vname="x"/>
+ <funcall fname="factorial">
+ <sub vname="x"><integer>1</integer></sub>
+ </funcall>
+ </mul>
+ </if>
</defun>
- <set>
- <const type="symbol">x</const>
- <const type="integer">10</const>
- </set>
- <funcall id="temp">
- <variable vname="x"/>
- <const type="integer">1</const>
- </funcall>
+ <defun fname="looptest">
+ <args><fixed vname="l"/></args>
+ <loop><loop>
+ <foreach vname="term"><varref vname="l"/>
+ <eval><varref vname="term"/></eval>
+ </foreach>
+ </loop></loop>
+ <symbol>looptest-finished</symbol>
+ </defun>
+
+ <defmacro fname="temp">
+ <args><fixed vname="x"/></args>
+ <if>
+ <lt><eval><varref vname="x"/></eval><integer>10</integer></lt>
+ <varref vname="x"/>
+ </if>
+ </defmacro>
+
+ <set vname="x"><integer>10</integer></set>
+ <set vname="str"><string>ABC</string></set>
+ <append>
+ <catch><symbol>tag</symbol>
+ <funcall fname="looptest">
+ <list>
+ <set vname="i"><integer>0</integer></set>
+ <throw><symbol>tag</symbol><symbol>returned</symbol></throw>
+ <add vname="i"><integer>1</integer></add>
+ <varref vname="i"/>
+ </list>
+ </funcall>
+ </catch>
+ <funcall fname="factorial"><varref vname="x"/></funcall>
+ <ins vname="str"><integer>1</integer><string>123</string></ins>
+ <del vname="str"><integer>2</integer><integer>4</integer></del>
+ <cond>
+ <list><gt><integer>0</integer><integer>1</integer></gt>
+ <string>1st</string></list>
+ <list><integer>1</integer>
+ <string>2nd</string></list>
+ </cond>
+ <foreach vname="a">
+ <list><integer>10</integer><integer>11</integer></list>
+ <funcall fname="add" vname="x"><varref vname="a"/></funcall>
+ </foreach>
+ <varref vname="x"/>
+ <eval><varref vname="x"/></eval>
+ <eval>
+ <eval>
+ <quote><add><varref vname="x"/><integer>1</integer></add></quote>
+ </eval>
+ </eval>
+ <concat><integer>?a</integer><integer>?b</integer></concat>
+ <quote><add><varref vname="x"/><integer>1</integer></add></quote>
+ <integer>100</integer>
+ <temp><add vname="y"><integer>20</integer></add></temp>
+ </append>
</expr>