<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Quick Reference</title><link>https://sourceforge.net/p/conca/wiki/Quick%2520Reference/</link><description>Recent changes to Quick Reference</description><atom:link href="https://sourceforge.net/p/conca/wiki/Quick%20Reference/feed" rel="self"/><language>en</language><lastBuildDate>Thu, 24 Apr 2014 02:43:05 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/conca/wiki/Quick%20Reference/feed" rel="self" type="application/rss+xml"/><item><title>Quick Reference modified by CMarinier</title><link>https://sourceforge.net/p/conca/wiki/Quick%2520Reference/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v6
+++ v7
@@ -91,12 +91,14 @@

 Some control word.

+- branch   ( b \[then\] \[else\] -- ; if b is true, execute then, otherwise execute else )
 - choice   ( a b c -&gt; if a is true, then b, else c; it chooses a value based on a boolean)
+- ift      ( \[test\] \[then\]; if test returns true, execute then, otherwise do nothing )
 - ifte     ( \[test\] \[then\] \[else\]; if test returns true, execute then, otherwise execute else )
-- ifinteger  ( a \[then\] \[else\]; if a in an integer, execute then, otherwise execute else )
-- iffloat  ( a \[then\] \[else\]; if a in a float, execute then, otherwise execute else )
-- iflist   ( a \[then\] \[else\]; if a in a list, execute then, otherwise execute else )
-- ifstring ( a \[then\] \[else\]; if a in a string, execute then, otherwise execute else )
+- integer? ( thing -- boolean; true if a in an integer, else otherwise )
+- float?   ( thing -- boolean; true if a in a float, else otherwise )
+- list?    ( thing -- boolean; true if a in a list, else otherwise )
+- string?  ( thing -- boolean; true if a in a string, else otherwise )
 - while    ( \[test\] \[loop\]; execute loop as long as test returns true )
 - times    ( n \[loop\]; executes loop n times )
 - map      ( aggregate quotation; apply the quotation to every item in the aggregate and put the on the stack in an aggregate, the function in the quotation must consume one item and produce one item )
@@ -108,26 +110,26 @@
 Some examples
 -------------

-    &gt;&gt; 4 \["times\\n" print\] times
+    &gt;&gt; 4 ["times\n" print] times
     times
     times
     times
     times

-    &gt;&gt; 3 \[1 - dup 0 &gt;=\] ["counting\\n" print] while
+    &gt;&gt; 3 [1 - dup 0 &gt;=] ["counting\n" print] while
     counting
     counting
     counting

     ( Greatest common devisor, yes this is a comment, nestable )
-    &gt;&gt; 144 124 \[dup 0 \&gt;\] \[dup rollup rem\] while pop .
+    &gt;&gt; 144 124 [dup 0 &gt;] [dup rollup rem] while pop .
     4

-    &gt;&gt; "abc" \[upcase\] map .
+    &gt;&gt; "abc" [upcase] map .
     "ABC"

-    &gt;&gt; \[1 2 3\] \[2 *\] map .
-    \[ 2 4 6 \]
+    &gt;&gt; [1 2 3] [2 *] map .
+    [ 2 4 6 ]

 You can define new words like this:

@@ -135,7 +137,7 @@

 Example:

-    \[ dup * \] "square" define
+    [ dup * ] "square" define

 You can now do this:

@@ -149,10 +151,10 @@

 Factorial

-    \[1 2 3 4 5\] 1 \[*\] foldr .
+    [1 2 3 4 5] 1 [*] foldr .

-    \[ "this is" " a " "good idea"\] "" \[conca\] foldr .
+    [ "this is" " a " "good idea"] "" [conca] foldr .

 Try it with foldl.

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">CMarinier</dc:creator><pubDate>Thu, 24 Apr 2014 02:43:05 -0000</pubDate><guid>https://sourceforge.net281f3f4185604c452e4f48a0482a13480b93d02d</guid></item><item><title>Quick Reference modified by CMarinier</title><link>https://sourceforge.net/p/conca/wiki/Quick%2520Reference/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v5
+++ v6
@@ -12,7 +12,7 @@
 - strings, and
 - lists.

-Specify a character with a single quote, a string with double quotes, and a list with square brackets; the booleans are true and false.
+Specify a character with a single quote, a string with double quotes, and a list with square brackets; the booleans are true and false. Strings and lists are indexed from 0 (zero).

 Some special characters are

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">CMarinier</dc:creator><pubDate>Wed, 23 Apr 2014 01:24:28 -0000</pubDate><guid>https://sourceforge.netd627b6286262b6ed0e685492b63009ffa6947b60</guid></item><item><title>Quick Reference modified by CMarinier</title><link>https://sourceforge.net/p/conca/wiki/Quick%2520Reference/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v4
+++ v5
@@ -86,6 +86,7 @@
 - pair     ( atom atom -- \[ atom atom \]; make a list from the top two items on the stack )
 - quote    ( atom -- quotation; the same as unit )
 - range    ( start end -- aggregate; make an aggregate of numbers from start to end, step size is 1 )
+- slice    ( aggregate start end -- aggregate; extract slice from aggregate )
 - reverse  ( aggregate -- aggregate; reverse the other of the list or string )

 Some control word.
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">CMarinier</dc:creator><pubDate>Wed, 23 Apr 2014 01:23:35 -0000</pubDate><guid>https://sourceforge.netd2ea4f1f33a608aa8751b9ca670357aa392ca5c6</guid></item><item><title>Quick Reference modified by CMarinier</title><link>https://sourceforge.net/p/conca/wiki/Quick%2520Reference/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v3
+++ v4
@@ -154,3 +154,19 @@
     \[ "this is" " a " "good idea"\] "" \[conca\] foldr .

 Try it with foldl.
+
+-----
+
+You may notice that numbers are unusual. There are
+
+- exact (whole) numbers (example from the square example above)
+
+    12345678987654321
+
+- rational numbers, and
+
+    11/12
+
+- inexact (floating point) numbers
+
+    123.456
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">CMarinier</dc:creator><pubDate>Tue, 22 Apr 2014 23:17:41 -0000</pubDate><guid>https://sourceforge.net3aa4722404fdc8c9845b82ed261c8550d9de2c30</guid></item><item><title>Quick Reference modified by CMarinier</title><link>https://sourceforge.net/p/conca/wiki/Quick%2520Reference/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v2
+++ v3
@@ -81,9 +81,9 @@
 - uncons   ( aggregate -- aggregate atom; split the first item from the rest of the aggregate )
 - first    ( aggregate -- atom; replace aggregate with its first item )
 - rest     ( aggregate -- aggregate; remove first item from aggregate )
-- join     ( aggregate aggregate -- aggregate; joins the two aggregates )
-- unit     ( atom -- [ atom ]; make a list from the top iten on the stack )
-- pair     ( atom atom -- [ atom atom ]; make a list from the top two items on the stack )
+- conca    ( aggregate aggregate -- aggregate; concatenate the two aggregates )
+- unit     ( atom -- \[ atom \]; make a list from the top iten on the stack )
+- pair     ( atom atom -- \[ atom atom \]; make a list from the top two items on the stack )
 - quote    ( atom -- quotation; the same as unit )
 - range    ( start end -- aggregate; make an aggregate of numbers from start to end, step size is 1 )
 - reverse  ( aggregate -- aggregate; reverse the other of the list or string )
@@ -107,52 +107,50 @@
 Some examples
 -------------

-    &gt;&gt; 4 ["times\n" print] times
+    &gt;&gt; 4 \["times\\n" print\] times
     times
     times
     times
     times

-    \&gt;\&gt; 3 \[1 - dup 0 &gt;=\] ["counting\\n" print] while
+    &gt;&gt; 3 \[1 - dup 0 &gt;=\] ["counting\\n" print] while
     counting
     counting
     counting

     ( Greatest common devisor, yes this is a comment, nestable )
-    \&gt;\&gt; 144 124 \[dup 0 \&gt;\] \[dup rollup rem\] while pop .
+    &gt;&gt; 144 124 \[dup 0 \&gt;\] \[dup rollup rem\] while pop .
     4

-    \&gt;\&gt; "abc" \[upcase\] map .
+    &gt;&gt; "abc" \[upcase\] map .
     "ABC"
-    \&gt;\&gt; \[1 2 3\] \[2 *\] map .
+
+    &gt;&gt; \[1 2 3\] \[2 *\] map .
     \[ 2 4 6 \]

-you can define new words like this:
+You can define new words like this:

-  quotation "name" define    ( a quotation is a list I will execute )
+    quotation "name" define    ( a quotation is a list I will execute )

-  example:
-    [ dup * ] "square" define
+Example:

-  you can now do this:
+    \[ dup * \] "square" define
+
+You can now do this:
+
     111111111 square .
+
     12345678987654321

-load code form a file
+Load code form a file:

-  "square.joy" load
+    "square.joy" load

-"abc" [upcase] map .
+Factorial

-[1 2 3] [2 *] map .
+    \[1 2 3 4 5\] 1 \[*\] foldr .

-factorial
+    \[ "this is" " a " "good idea"\] "" \[conca\] foldr .

-  [1 2 3 4 5] 1 [*] foldr .
-
-
-[ "this is" " a " "good idea"] "" [conca] foldr .
-
-try it with foldl
-
+Try it with foldl.
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">CMarinier</dc:creator><pubDate>Tue, 22 Apr 2014 23:12:48 -0000</pubDate><guid>https://sourceforge.net731e19daab05285e8bcb3b9ac71e0be711501bee</guid></item><item><title>Quick Reference modified by CMarinier</title><link>https://sourceforge.net/p/conca/wiki/Quick%2520Reference/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v1
+++ v2
@@ -5,6 +5,7 @@
 ----

 Conca knows about
+
 - booleans,
 - numbers,
 - characters,
@@ -14,6 +15,7 @@
 Specify a character with a single quote, a string with double quotes, and a list with square brackets; the booleans are true and false.

 Some special characters are
+
 - \\n  newline
 - \\r  return
 - \\t  tab
@@ -46,75 +48,59 @@
 - dip variants of previous five
 - operators : +  -  *  /
 - arithmetic
-  - rem
-  - div
-  - abs
-  - trunc
-  - neg
-  - sign
+    - rem
+    - div
+    - abs
+    - trunc
+    - neg
+    - sign
 - predicates
-  - =
-  - !=
-  - &lt;
-  - &lt;=
-  - &gt;
-  - &gt;= 
+    - =
+    - !=
+    - &lt;
+    - &lt;=
+    - \&gt;
+    - \&gt;= 
 - boolean operators : and, or, not
 - math
-  - power    ( a b -- r; a raised to the power b )
-  - exp      ( a -- r, e raised to the power a )
-  - sqrt, e, log, log10
-  - pi, sin, cos, tan, asin, acos, atan, atan2
+    - power    ( a b -- r; a raised to the power b )
+    - exp      ( a -- r, e raised to the power a )
+    - sqrt, e, log, log10
+    - pi, sin, cos, tan, asin, acos, atan, atan2
+
+-----

 Words which operate on aggregates: strings and lists.

 - apply    ( aggregate; execute the function in the aggregate )
 - size     ( aggregate -- aggregate n; pushes number of items in the aggregate )
-- count    ( aggregate -- n; pushes number of items in the aggregate and
-             consumes the aggregate )
+- count    ( aggregate -- n; pushes number of items in the aggregate and consumes the aggregate )
 - at       ( aggregate index -- r; element index of aggregate, zero based )
 - of       ( index aggregate -- r; element index of aggregate, zero based )
 - cons     ( aggregate atom -- aggregate; add atom to front of aggregate )
-- uncons   ( aggregate -- aggregate atom; split the first item from the rest of
-             the aggregate )
+- uncons   ( aggregate -- aggregate atom; split the first item from the rest of the aggregate )
 - first    ( aggregate -- atom; replace aggregate with its first item )
 - rest     ( aggregate -- aggregate; remove first item from aggregate )
 - join     ( aggregate aggregate -- aggregate; joins the two aggregates )
 - unit     ( atom -- [ atom ]; make a list from the top iten on the stack )
-- pair     ( atom atom -- [ atom atom ]; make a list from the top two items
-             on the stack )
+- pair     ( atom atom -- [ atom atom ]; make a list from the top two items on the stack )
 - quote    ( atom -- quotation; the same as unit )
-- range    ( start end -- aggregate; make an aggregate of numbers from start to
-             end, step size is 1 )
+- range    ( start end -- aggregate; make an aggregate of numbers from start to end, step size is 1 )
 - reverse  ( aggregate -- aggregate; reverse the other of the list or string )

 Some control word.

-- choice   ( a b c -&gt; if a is true, then b, else c;
-             it chooses a value based on a boolean)
-- ifte     ( [test] [then] [else]
-             if test returns true, execute then, otherwise execute else )
-- ifinteger  ( a [then] [else]
-               if a in an integer, execute then, otherwise execute else )
-- iffloat  ( a [then] [else]
-             if a in a float, execute then, otherwise execute else )
-- iflist   ( a [then] [else]
-             if a in a list, execute then, otherwise execute else )
-- ifstring ( a [then] [else]
-             if a in a string, execute then, otherwise execute else )
-- while    ( [test] [loop]
-             execute loop as long as test returns true )
-- times    ( n [loop]
-             executes loop n times )
-- map      ( aggregate quotation; apply the quotation to every item in the
-             aggregate and put the on the stack in an aggregate, the function
-             in the quotation must consume one item and produce one item)
-- foldr    ( aggregate start-value quotation -- result; apply the quotation
-             which consumes two things to the start-value and the current front
-             of the aggregate, consume the whole aggregate and leave the result)
-- foldl    ( aggregate start-value quotation -- result; apply the quotation
-             which consumes two things to the start-value and the current end
-             of the aggregate, consume the whole aggregate and leave the result)
+- choice   ( a b c -&gt; if a is true, then b, else c; it chooses a value based on a boolean)
+- ifte     ( \[test\] \[then\] \[else\]; if test returns true, execute then, otherwise execute else )
+- ifinteger  ( a \[then\] \[else\]; if a in an integer, execute then, otherwise execute else )
+- iffloat  ( a \[then\] \[else\]; if a in a float, execute then, otherwise execute else )
+- iflist   ( a \[then\] \[else\]; if a in a list, execute then, otherwise execute else )
+- ifstring ( a \[then\] \[else\]; if a in a string, execute then, otherwise execute else )
+- while    ( \[test\] \[loop\]; execute loop as long as test returns true )
+- times    ( n \[loop\]; executes loop n times )
+- map      ( aggregate quotation; apply the quotation to every item in the aggregate and put the on the stack in an aggregate, the function in the quotation must consume one item and produce one item )
+- foldr    ( aggregate start-value quotation -- result; apply the quotation which consumes two things to the start-value and the current front of the aggregate, consume the whole aggregate and leave the result )
+- foldl    ( aggregate start-value quotation -- result; apply the quotation which consumes two things to the start-value and the current end of the aggregate, consume the whole aggregate and leave the result )

 Note : foldr and foldl with produce identical results when the quotation is commutative.

@@ -127,19 +113,19 @@
     times
     times

-    &gt;&gt; 3 [1 - dup 0 &gt;=] ["counting\n" print] while
+    \&gt;\&gt; 3 \[1 - dup 0 &gt;=\] ["counting\\n" print] while
     counting
     counting
     counting

     ( Greatest common devisor, yes this is a comment, nestable )
-    &gt;&gt; 144 124 [dup 0 &gt;] [dup rollup rem] while pop .
+    \&gt;\&gt; 144 124 \[dup 0 \&gt;\] \[dup rollup rem\] while pop .
     4

-    &gt;&gt; "abc" [upcase] map .
+    \&gt;\&gt; "abc" \[upcase\] map .
     "ABC"
-    &gt;&gt; [1 2 3] [2 *] map .
-    [ 2 4 6 ]
+    \&gt;\&gt; \[1 2 3\] \[2 *\] map .
+    \[ 2 4 6 \]

 you can define new words like this:

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">CMarinier</dc:creator><pubDate>Tue, 22 Apr 2014 23:08:39 -0000</pubDate><guid>https://sourceforge.net4df8bd70e22b9e52ce7b5b4216fabaaff38366e4</guid></item><item><title>Quick Reference modified by CMarinier</title><link>https://sourceforge.net/p/conca/wiki/Quick%2520Reference/</link><description>&lt;div class="markdown_content"&gt;&lt;h1 id="conca"&gt;Conca&lt;/h1&gt;
&lt;h2 id="data"&gt;Data&lt;/h2&gt;
&lt;p&gt;Conca knows about&lt;br /&gt;
- booleans,&lt;br /&gt;
- numbers,&lt;br /&gt;
- characters,&lt;br /&gt;
- strings, and&lt;br /&gt;
- lists.&lt;/p&gt;
&lt;p&gt;Specify a character with a single quote, a string with double quotes, and a list with square brackets; the booleans are true and false.&lt;/p&gt;
&lt;p&gt;Some special characters are&lt;br /&gt;
- \n  newline&lt;br /&gt;
- \r  return&lt;br /&gt;
- \t  tab&lt;br /&gt;
- \b  backspace&lt;/p&gt;
&lt;h2 id="words"&gt;Words&lt;/h2&gt;
&lt;p&gt;Conca pushes data on the stack.&lt;/p&gt;
&lt;p&gt;It executes words. Words operate on things stored in the stack.&lt;/p&gt;
&lt;p&gt;Many words are pre-defined.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;clear    (removes all from stack )&lt;/li&gt;
&lt;li&gt;.        ( prints the top thing on the stack )&lt;/li&gt;
&lt;li&gt;top      ( prints the top thing on the stack )&lt;/li&gt;
&lt;li&gt;top2     ( prints the top two things on the stack )&lt;/li&gt;
&lt;li&gt;top3     ( prints the top three things on the stack )&lt;/li&gt;
&lt;li&gt;drop     ( remove top element from stack )&lt;/li&gt;
&lt;li&gt;drop2    ( remove top two elements from stack )&lt;/li&gt;
&lt;li&gt;drop3    ( remove top three elements from stack )&lt;/li&gt;
&lt;li&gt;pop      ( item -- ; removes top of stack )&lt;/li&gt;
&lt;li&gt;dup      ( item -- item item; duplicates top of stack )&lt;/li&gt;
&lt;li&gt;swap     ( a b -- b a; swaps top two items )&lt;/li&gt;
&lt;li&gt;rotate   ( a b c -- c b a )&lt;/li&gt;
&lt;li&gt;rollup   ( a b c -- c a b )&lt;/li&gt;
&lt;li&gt;rolldown ( a b c -- b c a )&lt;/li&gt;
&lt;li&gt;dip      ( quotation item -- item; save top, execute function, restore item )&lt;/li&gt;
&lt;li&gt;dip variants of previous five&lt;/li&gt;
&lt;li&gt;operators : +  -  *  /&lt;/li&gt;
&lt;li&gt;arithmetic&lt;/li&gt;
&lt;li&gt;rem&lt;/li&gt;
&lt;li&gt;div&lt;/li&gt;
&lt;li&gt;abs&lt;/li&gt;
&lt;li&gt;trunc&lt;/li&gt;
&lt;li&gt;neg&lt;/li&gt;
&lt;li&gt;sign&lt;/li&gt;
&lt;li&gt;predicates&lt;/li&gt;
&lt;li&gt;=&lt;/li&gt;
&lt;li&gt;!=&lt;/li&gt;
&lt;li&gt;&amp;lt;&lt;/li&gt;
&lt;li&gt;&amp;lt;=&lt;/li&gt;
&lt;li&gt;
&lt;blockquote&gt;&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;blockquote&gt;
&lt;p&gt;= &lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;boolean operators : and, or, not&lt;/li&gt;
&lt;li&gt;math&lt;/li&gt;
&lt;li&gt;power    ( a b -- r; a raised to the power b )&lt;/li&gt;
&lt;li&gt;exp      ( a -- r, e raised to the power a )&lt;/li&gt;
&lt;li&gt;sqrt, e, log, log10&lt;/li&gt;
&lt;li&gt;pi, sin, cos, tan, asin, acos, atan, atan2&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Words which operate on aggregates: strings and lists.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;apply    ( aggregate; execute the function in the aggregate )&lt;/li&gt;
&lt;li&gt;size     ( aggregate -- aggregate n; pushes number of items in the aggregate )&lt;/li&gt;
&lt;li&gt;count    ( aggregate -- n; pushes number of items in the aggregate and&lt;br /&gt;
             consumes the aggregate )&lt;/li&gt;
&lt;li&gt;at       ( aggregate index -- r; element index of aggregate, zero based )&lt;/li&gt;
&lt;li&gt;of       ( index aggregate -- r; element index of aggregate, zero based )&lt;/li&gt;
&lt;li&gt;cons     ( aggregate atom -- aggregate; add atom to front of aggregate )&lt;/li&gt;
&lt;li&gt;uncons   ( aggregate -- aggregate atom; split the first item from the rest of&lt;br /&gt;
             the aggregate )&lt;/li&gt;
&lt;li&gt;first    ( aggregate -- atom; replace aggregate with its first item )&lt;/li&gt;
&lt;li&gt;rest     ( aggregate -- aggregate; remove first item from aggregate )&lt;/li&gt;
&lt;li&gt;join     ( aggregate aggregate -- aggregate; joins the two aggregates )&lt;/li&gt;
&lt;li&gt;unit     ( atom -- &lt;span&gt;[ atom ]&lt;/span&gt;; make a list from the top iten on the stack )&lt;/li&gt;
&lt;li&gt;pair     ( atom atom -- &lt;span&gt;[ atom atom ]&lt;/span&gt;; make a list from the top two items&lt;br /&gt;
             on the stack )&lt;/li&gt;
&lt;li&gt;quote    ( atom -- quotation; the same as unit )&lt;/li&gt;
&lt;li&gt;range    ( start end -- aggregate; make an aggregate of numbers from start to&lt;br /&gt;
             end, step size is 1 )&lt;/li&gt;
&lt;li&gt;reverse  ( aggregate -- aggregate; reverse the other of the list or string )&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Some control word.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;choice   ( a b c -&amp;gt; if a is true, then b, else c;&lt;br /&gt;
             it chooses a value based on a boolean)&lt;/li&gt;
&lt;li&gt;ifte     ( &lt;span&gt;[test]&lt;/span&gt; &lt;span&gt;[then]&lt;/span&gt; &lt;span&gt;[else]&lt;/span&gt;&lt;br /&gt;
             if test returns true, execute then, otherwise execute else )&lt;/li&gt;
&lt;li&gt;ifinteger  ( a &lt;span&gt;[then]&lt;/span&gt; &lt;span&gt;[else]&lt;/span&gt;&lt;br /&gt;
               if a in an integer, execute then, otherwise execute else )&lt;/li&gt;
&lt;li&gt;iffloat  ( a &lt;span&gt;[then]&lt;/span&gt; &lt;span&gt;[else]&lt;/span&gt;&lt;br /&gt;
             if a in a float, execute then, otherwise execute else )&lt;/li&gt;
&lt;li&gt;iflist   ( a &lt;span&gt;[then]&lt;/span&gt; &lt;span&gt;[else]&lt;/span&gt;&lt;br /&gt;
             if a in a list, execute then, otherwise execute else )&lt;/li&gt;
&lt;li&gt;ifstring ( a &lt;span&gt;[then]&lt;/span&gt; &lt;span&gt;[else]&lt;/span&gt;&lt;br /&gt;
             if a in a string, execute then, otherwise execute else )&lt;/li&gt;
&lt;li&gt;while    ( &lt;span&gt;[test]&lt;/span&gt; &lt;span&gt;[loop]&lt;/span&gt;&lt;br /&gt;
             execute loop as long as test returns true )&lt;/li&gt;
&lt;li&gt;times    ( n &lt;span&gt;[loop]&lt;/span&gt;&lt;br /&gt;
             executes loop n times )&lt;/li&gt;
&lt;li&gt;map      ( aggregate quotation; apply the quotation to every item in the&lt;br /&gt;
             aggregate and put the on the stack in an aggregate, the function&lt;br /&gt;
             in the quotation must consume one item and produce one item)&lt;/li&gt;
&lt;li&gt;foldr    ( aggregate start-value quotation -- result; apply the quotation&lt;br /&gt;
             which consumes two things to the start-value and the current front&lt;br /&gt;
             of the aggregate, consume the whole aggregate and leave the result)&lt;/li&gt;
&lt;li&gt;foldl    ( aggregate start-value quotation -- result; apply the quotation&lt;br /&gt;
             which consumes two things to the start-value and the current end&lt;br /&gt;
             of the aggregate, consume the whole aggregate and leave the result)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note : foldr and foldl with produce identical results when the quotation is commutative.&lt;/p&gt;
&lt;h2 id="some-examples"&gt;Some examples&lt;/h2&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;times&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&lt;/span&gt; &lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="n"&gt;times&lt;/span&gt;
&lt;span class="n"&gt;times&lt;/span&gt;
&lt;span class="n"&gt;times&lt;/span&gt;
&lt;span class="n"&gt;times&lt;/span&gt;
&lt;span class="n"&gt;times&lt;/span&gt;

&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;dup&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;counting&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&lt;/span&gt; &lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;while&lt;/span&gt;
&lt;span class="n"&gt;counting&lt;/span&gt;
&lt;span class="n"&gt;counting&lt;/span&gt;
&lt;span class="n"&gt;counting&lt;/span&gt;

&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="n"&gt;Greatest&lt;/span&gt; &lt;span class="n"&gt;common&lt;/span&gt; &lt;span class="n"&gt;devisor&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;yes&lt;/span&gt; &lt;span class="n"&gt;this&lt;/span&gt; &lt;span class="n"&gt;is&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;comment&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;nestable&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;144&lt;/span&gt; &lt;span class="mi"&gt;124&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;dup&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;dup&lt;/span&gt; &lt;span class="n"&gt;rollup&lt;/span&gt; &lt;span class="n"&gt;rem&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;pop&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt;
&lt;span class="mi"&gt;4&lt;/span&gt;

&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;abc&amp;quot;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;upcase&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="n"&gt;map&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt;
&lt;span class="s"&gt;&amp;quot;ABC&amp;quot;&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="n"&gt;map&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt;
&lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt; &lt;span class="p"&gt;]&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;you can define new words like this:&lt;/p&gt;
&lt;p&gt;quotation "name" define    ( a quotation is a list I will execute )&lt;/p&gt;
&lt;p&gt;example:&lt;br /&gt;
&lt;span&gt;[ dup * ]&lt;/span&gt; "square" define&lt;/p&gt;
&lt;p&gt;you can now do this:&lt;br /&gt;
    111111111 square .&lt;br /&gt;
    12345678987654321&lt;/p&gt;
&lt;p&gt;load code form a file&lt;/p&gt;
&lt;p&gt;"square.joy" load&lt;/p&gt;
&lt;p&gt;"abc" &lt;span&gt;[upcase]&lt;/span&gt; map .&lt;/p&gt;
&lt;p&gt;&lt;span&gt;[1 2 3]&lt;/span&gt; &lt;span&gt;[2 *]&lt;/span&gt; map .&lt;/p&gt;
&lt;p&gt;factorial&lt;/p&gt;
&lt;p&gt;&lt;span&gt;[1 2 3 4 5]&lt;/span&gt; 1 &lt;span&gt;[*]&lt;/span&gt; foldr .&lt;/p&gt;
&lt;p&gt;&lt;span&gt;[ "this is" " a " "good idea"]&lt;/span&gt; "" &lt;span&gt;[conca]&lt;/span&gt; foldr .&lt;/p&gt;
&lt;p&gt;try it with foldl&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">CMarinier</dc:creator><pubDate>Tue, 22 Apr 2014 22:55:32 -0000</pubDate><guid>https://sourceforge.netb1b65d3e97b670ba4d271f550f3dfd3be2ee5cea</guid></item></channel></rss>