<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -0,0 +1,3 @@
+===
+===
+===</diff>
      <filename>History.txt</filename>
    </modified>
    <modified>
      <diff>@@ -13,7 +13,7 @@ Hoe.new('bus-scheme', BusScheme::VERSION) do |p|
   p.email = 'technomancy@gmail.com'
   p.summary = 'Bus Scheme is a Scheme in Ruby, imlemented on the bus.'
   p.description = p.paragraphs_of('README.txt', 2..5).join(&quot;\n\n&quot;)
-  p.url = p.paragraphs_of('README.txt', 0).first.split(/\n/)[1..-1]
+  p.url = 'http://bus-scheme.rubyforge.org'
   p.remote_rdoc_dir = ''
 end
 </diff>
      <filename>Rakefile</filename>
    </modified>
    <modified>
      <diff>@@ -7,15 +7,13 @@ class Array
   alias_method :car, :first
   alias_method :cdr, :rest
 
-  def to_list
-    car = self.car
-    # TODO: make this car-recursive?
-    # car = car.to_list if car.respond_to?(:to_list)
+  def to_list(recursive = false)
+    self[0] = first.to_list(recursive) if recursive and first.respond_to?(:to_list)
 
     if self.cdr.nil? or self.cdr.empty?
-      BusScheme::Cons.new(car, nil)
+      BusScheme::Cons.new(car)
     else
-      BusScheme::Cons.new(car, self.cdr.to_list)
+      BusScheme::Cons.new(car, self.cdr.to_list(recursive))
     end
   end
 </diff>
      <filename>lib/array_extensions.rb</filename>
    </modified>
    <modified>
      <diff>@@ -15,6 +15,17 @@ module BusScheme
     alias_method :first, :car
     alias_method :rest, :cdr
 
+    def length
+      # TODO: actually calculate this
+      self.to_a.length
+    end
+
+    alias_method :size, :length
+    def last
+      # TODO: do this list-style
+      self.to_a.last
+    end
+    
     def map(mapper)
       Cons.new(mapper.call(@car), @cdr ? @cdr.map(mapper) : @cdr)
     end</diff>
      <filename>lib/cons.rb</filename>
    </modified>
    <modified>
      <diff>@@ -28,7 +28,7 @@ class Object
     return self
   end
 
-  def sexp
+  def sexp(r = false)
     self
   end
   </diff>
      <filename>lib/object_extensions.rb</filename>
    </modified>
    <modified>
      <diff>@@ -7,7 +7,7 @@ module BusScheme
   def parse(input)
     @@lines = 1
     # TODO: should sexp it as it's being constructed, not after
-    parse_tokens(tokenize(input).flatten).sexp
+    parse_tokens(tokenize(input).flatten).sexp(true)
   end
 
   # Turn a list of tokens into a properly-nested array</diff>
      <filename>lib/parser.rb</filename>
    </modified>
    <modified>
      <diff>@@ -5,7 +5,7 @@ class BusSchemeLambdaTest &lt; Test::Unit::TestCase
   def test_simple_lambda
     l = eval(&quot;(lambda () (+ 1 1))&quot;)
     assert l.is_a?(Lambda)
-    assert_equal [[:+.sym, 1, 1]], l.body
+    assert_equal [[:+.sym, 1, 1]].to_list(true), l.body
     assert_equal [], l.formals
 
     eval(&quot;(define foo (lambda () (+ 1 1)))&quot;)</diff>
      <filename>test/test_lambda.rb</filename>
    </modified>
    <modified>
      <diff>@@ -170,7 +170,7 @@ class BusSchemeParserTest &lt; Test::Unit::TestCase
   private
 
   def assert_parses_to(actual_string, expected)
-    assert_equal expected.sexp, BusScheme.parse(actual_string)
+    assert_equal expected.sexp(true), BusScheme.parse(actual_string)
   end
 
   def assert_parses_equal(one, two, message = nil)</diff>
      <filename>test/test_parser.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>d4dc1c7228d995f733a8da97f355c6625b857aba</id>
    </parent>
  </parents>
  <author>
    <name>Phil Hagelberg</name>
    <email>phil@hagelb.org</email>
  </author>
  <url>http://github.com/technomancy/bus-scheme/commit/2c048169823d8a64e86824337674721bb03d00bd</url>
  <id>2c048169823d8a64e86824337674721bb03d00bd</id>
  <committed-date>2008-03-16T20:36:23-07:00</committed-date>
  <authored-date>2008-03-16T20:36:23-07:00</authored-date>
  <message>Array#to_list is now recursive</message>
  <tree>f1a89781fd92e599204fd9b1de7ca3f4ffb853cd</tree>
  <committer>
    <name>Phil Hagelberg</name>
    <email>phil@hagelb.org</email>
  </committer>
</commit>
