   # TODO: This generates pretty ugly code ... shrink it.
   compile_array: (o) ->
     body: Expressions.wrap([new LiteralNode('i')])
-    arr:  Expressions.wrap([new ForNode(body, {source: (new ValueNode(this))}, 'i')])
+    arr:  Expressions.wrap([new ForNode(body, {source: (new ValueNode(this))}, new LiteralNode('i'))])
     (new ParentheticalNode(new CallNode(new CodeNode([], arr)))).compile(o)
 
 }

    return    @compile_array(o) unless o.index
    idx:      del o, 'index'
    step:     del o, 'step'
    equals:   if @exclusive then '' else '='
    intro:    '(' + @from_var + ' <= ' + @to_var + ' ? ' + idx
    compare:  intro + ' <' + equals + ' ' + @to_var + ' : ' + idx + ' >' + equals + ' ' + @to_var + ')'

LiteralNode: exports.LiteralNode: inherit Node, {

  constructor: (value) ->
    @value: value
    this

  # Break and continue must be treated as statements -- they lose their meaning
