def transpose(*order)
      if (0 ... dimension).to_a != order.sort
        raise 'Each array index must be specified exactly once!'
      end
      term = self
      variables = shape.reverse.collect do |i|
        var = Variable.new Hornetseye::INDEX( i )
        term = term.element var
        var
      end.reverse
      order.collect { |o| variables[o] }.
        inject(term) { |retval,var| Lambda.new var, retval }
    end
def transpose(*order)
      if (0 ... dimension).to_a != order.sort
        raise 'Each array index must be specified exactly once!'
      end
      term = self
      variables = shape.reverse.collect do |i|
        var = Variable.new Hornetseye::INDEX( i )
        term = term.element var
        var
      end.reverse
      order.collect { |o| variables[o] }.
        inject(term) { |retval,var| Lambda.new var, retval }
    end
Element-wise comparison of values

 @param [Node] other Array with values to compare with.

 @return [Node] Array with results.
 Lazy transpose of array

 Lazily compute transpose by swapping indices according to the specified
 order.

 @param [Array<Integer>] order New order of indices.

 @return [Node] Returns the transposed array.