anchor.diff:      (stringify-list asts Empty stringify'))
   
   (export main (source)
  -        (stringify (parse (tokenize source))))
  +    (stringify (parse (tokenize source))))
  
positive.code:         Empty (Pair source collector)
          (Cons _ __) (match (reducer source collector)
                             (Pair source collector) (consuming-reduce source collector reducer))))
  
  (data (token a b) (SymbolToken (list a))
                    (Int32Token b)
  
negative.code:                        (Int32 value)
                         ParseError)
  
  (def parse-next (tokens expression)
       (match tokens
              Empty (Halt Empty (reverse expression))
              (Cons token rest) (match token
                                       CloseBracketToken  (Halt rest (reverse expression))
                                       (SymbolToken name) (Next rest (Cons (Symbol name) expression))
                                       (Int32Token value) (Next rest (Cons (Int32 value) expression))
                                       ErrorToken         (Halt rest (Cons ParseError expression))
                                       OpenBracketToken   (match (haltable-consuming-reduce rest Empty parse-next)
                                                                 (Pair tokens subExpression) (Next tokens (Cons (Expression subExpression) expression))))))
  
  (def parse (tokens)
      (second (haltable-consuming-reduce tokens Empty parse-next)))
  
  (def stringify-list-insert-space (asts string stringify)
      (match asts
  