anchor.diff:             Empty (Pair Empty tokens))))))))
   
   (def tokenize (source)
  -    (second (consuming-reduce source Empty tokenize-next)))
  +    (reverse (second (consuming-reduce source Empty tokenize-next))))
   
   (data (ast name value) (Expression (list (ast name value)))
                          (Symbol name)
  
positive.code: (def parse (tokens)
      (second (parsing-reduce tokens Empty parse-next)))
  
  (def stringify-list (asts string stringify)
      (match asts
             Empty string
             (Cons expression rest) (stringify expression (stringify-list rest string stringify))))
  
  (def stringify (ast string)
      (match ast
          (Expression asts) (Cons 40 (stringify-list asts (Cons 41 string) stringify))
          (Symbol name) (Cons 32 (concat (reverse name) string))
          (Int32 name) (Cons 32 (concat (reverse name) string))
          ParseError (Cons 63 string)))
  
  (export main (source)
          (stringify-list (parse (reverse (tokenize source))) Empty stringify))
  
negative.code: (def reverse (list)
     (reverse' list Empty))
  
  (def concat' (first second)
      (match first
          Empty second
          (Cons char rest) (concat' rest (Cons char second))))
  
  (def concat (first second)
      (concat' (reverse first) second))
  
  (def consuming-reduce (source collector reducer)
      (match source
  