why do we still need the ~ operator? Can't we just get rid of it in favor of ordinary tuple constructors?