def demand
      if @initial
        retval = @initial.to_type( typecode ).simplify # !!!
        offset = INT.new 0
      else
        retval = @value.subst( @index => INT.new( 0 ) ).simplify # !!!
        offset = INT.new 1
      end
      offset.upto @index.size - 1 do |i|
        sub = @value.subst @index => INT.new( i )
        retval.assign @block.subst(@var1 => retval, @var2 => sub)
      end
      retval
    end
def demand
      if @initial
        retval = @initial.to_type( typecode ).simplify # !!!
        offset = INT.new 0
      else
        retval = @value.subst( @index => INT.new( 0 ) ).simplify # !!!
        offset = INT.new 1
      end
      offset.upto @index.size - 1 do |i|
        sub = @value.subst @index => INT.new( i )
        retval.assign @block.subst(@var1 => retval, @var2 => sub)
      end
      retval
    end
Reevaluate computation

 @return [Node,Object] Result of computation

 @see #force

 @private