the abstract runtime environment prototype
[bugfix] nested plus operator
tmp
tmp deving
new trial
List style changed

Old style
=========
list:  (1) -> (2) -> (3) -> EOL (EndOfList)
pair:  (1) -> (2) -> nil

New style
=========
list:  (1) -> (2) -> (3) -> nil
pair:  (1) -> 2

Clarify the concept of a list
=============================
eval of a list, just eval the first element
(+) -> (2) -> (3) -> nil
 ^(eval this) #=> 5

eval of an atom, return itself
2
^(eval this) => 2
evaluation support for built-in functions

* This time many lines of code has been deminished! *

Since I adopted the new list style, everything's been more intuitive.

`eval` for all types(literal, list) are now available.

I yet seperated some special data types from `prim_types.rb` to
independent files.

TODO:
* clarify the data inherence structure for the types.
* solve that
  `return SExpr.new(@val.eval(env)).cons(@next.eval(env)) if pair_tail?`
  doesn't work in SExpr#eval_chain
Macro support

Now revo supports built-in macro definition.

Use function `def_macro` in Revo::BuiltInFunctions to define a macro.

The difference between a macro and a function is that a macro won't evaluate the argument list.

And a fix of list/pair display problem, since `(1 2 . (3 4))` is completely same as `(1 2 3 . 4)` so there's no need to handle the condition that `cdr.next.nil?` is also end of lists.
Merge pull request #2 from shouya/dev-new-list

Cool!
built-in funcs. NOTE: conflicts not solved
lambda support, recursion debugging
fixing recursion failure.
add makefile for generating parser file
friendly parser error(context reporting)
turn tail recursion optimization for ruby on
define-macro supported
fixed bug about parameter pairs of lambdas
built-in `list` function