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: http://github.com/jcoglan/heist http://blog.jcoglan.com/2009/04/02/april-fool-area... 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.
on 2009-04-02 20:46