    # File lib/core/facets/enumerable/ewise.rb, line 17
      def ewise(count=1)
        Functor.new do |op,*args|
          if args.empty?
            r = self
            count.times do
              r = r.collect{ |a| a.send(op) }
            end
            r
          else
            r = args.collect do |arg|
              if Array === arg #arg.kind_of?(Enumerable)
                x = self
                count.times do
                  ln = (arg.length > length ? length : arg.length )
                  x = x.slice(0...ln)
                  x = x.zip(arg[0...ln])
                  x = x.collect{ |a,b| a.send(op,b) }  #x = x.collect{ |a,b| b ? a.send(op,b) : nil }
                end
                x
              else
                x = self
                count.times do
                  x = x.collect{ |a| a.send(op,arg) }
                end
                x
              end
            end
            r.flatten! if args.length == 1
            r
          end
        end
      end