It would be neat if it wasn't necessary to repeat the name of the columns on which you are joining, when they are the same:
@join(foo, bar, _.joincolumn, _.joincolumn, {_.other, __.also})
Right now the macro seems to just go by the number of arguments, so omitting one tries to create a function for foo |> @join(bar, ... use, but perhaps it could look at what it gets before deciding?