<function name="add" params="number, number" return="number"> <number-add> </function>
<number-new value="3"> <number-new value="4"> <function-call name="add"></function-call> <assert-equal value="7" type="number">
<function name="greet" params="name: string" return="string"> <string-prepend string="Hello, "> </function>
<string-new value="World"> <function-call name="greet"></function-call> <assert-equal value="Hello, World" type="string">
<function name="sum" params="[number]" return="number">
<var-set name="total">
<number-new value="0">
</var-set>
<array-loop>
<var-update name="total">
<number-add>
</var-update>
</array-loop>
<var-get name="total">
</function>
<string-split self="1,2,3" separator=","> <array-map return="number"> <number-from-string> </array-map> <function-call name="sum"></function-call> <assert-equal value="6" type="number">
<function name="repeat" params="text: string, count: number" return="string">
<var-set name="result">
<string-new value>
</var-set>
<var-get name="count">
<array-sequence start="1">
<array-loop>
<var-update name="result">
<var-get name="text">
<string-append>
</var-update>
</array-loop>
<var-get name="result">
</function>
<string-new value="hello"> <number-new value="3"> <function-call name="repeat"></function-call> <assert-equal value="hellohellohello" type="string">
<function name="getAnswer" return="number"> <number-new value="42"> </function>
<function-call name="getAnswer"></function-call> <assert-equal value="42" type="number">
<function name="applyTwice" params="number, (number) -> number" return="number"> <closure-execute></closure-execute> <closure-execute></closure-execute> </function>
<number-new value="5"> <closure-new> <number-new value="2"> <number-multiply> </closure-new> <function-call name="applyTwice"></function-call> <assert-equal value="20" type="number">
<function name="transform" params="items: [string], mapper: (string) -> string" return="string">
<var-get name="items">
<array-map return="string">
<var-get name="mapper">
<closure-execute></closure-execute>
</array-map>
<array-join separator=",">
</function>
<string-split self="a,b,c" separator=","> <closure-new> <string-uppercase> </closure-new> <function-call name="transform"></function-call> <assert-equal value="A,B,C" type="string">
<function name="add" params="number, number" return="number"> <number-add> </function>
<function-call name="add" 0="3" 1="4"></function-call> <assert-equal value="7" type="number">