# Get Started with Ginger¶

$git clone git@github.com:Spicery/ginger.git$ cd ginger
$APPGINGER=pwd$ ./configure
$sudo make && make install  ## Install RudeCGI library¶ $ cd /tmp
$wget http://rudeserver.com/cgiparser/download/rudecgi-5.0.0.tar.gz$ tar zxf rudecgi-5.0.0.tar.gz


## Run a Ginger program¶

$cd examples$ common2gnx hello.cmn


## A slightly more extensive worked example¶

Given that the content of “upto.common” is:

  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 define append( x, y ) =>> if x.isPair then newPair( x.head, x.tail @append y ) else y endif enddefine; define rev( x ) =>> if x.isPair then x.tail.rev @append [ x.head ] else [] endif enddefine; define upto( n ) =>> [ for i from 1 to n do i endfor ] enddefine; 10.upto.rev; 

Then piping the Ginger Common syntax source through common2gnx and then appginger:

\$ cat upto.common | common2gnx | appginger


produces the following console output:

Ginger: 0.7, Copyright (c) 2010  Stephen Leach
+----------------------------------------------------------------------+
| This program comes with ABSOLUTELY NO WARRANTY. It is free software, |
| and you are welcome to redistribute it under certain conditions.     |
| Use option --help=license for details.                               |
+----------------------------------------------------------------------+
There are 0 results (0s)

There are 0 results (0s)

There are 0 results (0s)

There is 1 result   (0s)
1.  [10,9,8,7,6,5,4,3,2,1]


Try increasing the 10.upto.rev to 1000.upto.rev and feel the breeze:

Ginger: 0.7, Copyright (c) 2010  Stephen Leach
+----------------------------------------------------------------------+
| This program comes with ABSOLUTELY NO WARRANTY. It is free software, |
| and you are welcome to redistribute it under certain conditions.     |
| Use option --help=license for details.                               |
+----------------------------------------------------------------------+
There are 0 results (0s)

There are 0 results (0s)

There are 0 results (0s)

There is 1 result   (0.41s)
1.  [1000,999, ... 1]


(to avoid tedium, the output has been elided)