# Heist 0.2.0, now with full list support

**URL:** <https://www.ruby-forum.com/t/heist-0-2-0-now-with-full-list-support/164589>\
**Category:** Ruby\
**Created:** [April 2, 2009, 8:46pm UTC](https://www.ruby-forum.com/t/heist-0-2-0-now-with-full-list-support/164589 "2009-04-02T20:46:53Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![james-calivar](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/2bfe46/32.png) [@james-calivar](https://www.ruby-forum.com/u/james-calivar)\
**Post date:** [April 2, 2009, 8:46pm UTC](https://www.ruby-forum.com/t/heist-0-2-0-now-with-full-list-support/164589/1 "2009-04-02T20:46:53Z")

</div>

Hi all,

I just released the 0.2.0 version of Heist, my Ruby Scheme runtime.  
Changes  
in this release include:

- Entirely revised to correctly support lists as linked pairs
- Complete set of R5RS list functions
- Syntax for dotted pairs and improper lists implemented
- Rest-args for functions using dot notation
- Almost-complete R5RS numeric library, including complexes and  
rationals
- Some parser bugs regarding literals and quoting fixed
- Many macro parsing and expansion bugs fixed, esp. concerning nested  
repeating patterns
- Macro keywords and collisions with local variables now follow the spec
- R6RS ellipsis escaping feature – (… …) – implemented
- All library syntax now implemented as macros, should all support  
call/cc
- Ruby data can now be executed as Scheme code
- Lots of inline documentation for the runtime

More information on GitHub and my blog:

> **[GitHub - jcoglan/heist: Scheme in as little Ruby and as much Scheme as...](https://github.com/jcoglan/heist)**
>
> Scheme in as little Ruby and as much Scheme as possible. Supports macros, continuations, tail recursion and lazy evaluation. - GitHub - jcoglan/heist: Scheme in as little Ruby and as much Scheme as...

[http://blog.jcoglan.com/2009/04/02/april-fool-area-man-releases-worlds-slowest-scheme-interpreter/](http://blog.jcoglan.com/2009/04/02/april-fool-area-man-releases-worlds-slowest-scheme-interpreter/)

Of particular interest to me is the Ruby-data-as-Scheme-code feature,  
for  
example:

scheme = Heist::Runtime.new

scheme.exec [:define, [:square, :x],  
[:\*, :x, :x]]

scheme.exec [:square, 9]  
#=\> 81

Once I’ve settled on a nice way to expose the macro system to Ruby, this  
could be used with ParseTree to rewrite Ruby code, like raganwald’s  
‘rewrite’ gem. Also, there’s a possibility for someone to write a new  
Ruby  
interpreter by taking ParseTree and adding a new set of built-in  
functions  
to the Heist runtime to execute its output. If someone has a serious  
stab at  
this I’d love to see the results.
