Question: Define/redefine infix operator

As I work a lot with lists (need to merge them frequently), I would like to redefine the `union` operator in such a way that it will merge two lists together. It would makes thing more efficient than writing 

list1 := [a,b,c];
list2 := [d,e,f];

newlist = [op(list1), op(list2)];

I've already tried

`&union` := proc(list1, list2)
  [op(list1), op(list2)];
end proc:

[a,b,c] &union [d,e,f]

but it's not what I'm looking for. In fact I could have used any name after the `&`... and really don't like having to type the & at the beginning (is there a way to define an infix operator without having to use the `&`?)

Maybe creating a module to override  the original definition?

my_module := module()
  export `union`:

  `union` := proc(foo,bar)
      if some_trigger then
         # return something
      else
         # use global `union` definition
      end if
   end proc:

end module;

Any suggestion?

P.S.

- I generally don't use the original set union operator, so redefining it is not an issue;

- I have to use lists 

Please Wait...