pub fn merge<X, Y>( xs: VecDeque<X>, ys: VecDeque<Y>, is_same: impl FnMut(&X, &Y) -> bool, cost_of_replece: impl FnMut(&X, &Y) -> f64, cost_of_append: impl FnMut(&Y) -> f64, cost_of_remove: impl FnMut(&X) -> f64) -> VecDeque<Merged<X, Y>>