Make a macro from with-channels function