merge :: (HotClass n, HotClass m, HotClass (n + m), Ord a) => Hot n a -> Hot m a -> Hot (n + m) a
merge x y = runMerge $ unfold (buildMerge (length x) (length y)) (Merge 0 0 (elementAt x) (elementAt y))
merge :: (HotClass n, HotClass m, HotClass (n + m), Ord a) => Hot n a -> Hot m a -> Hot (n + m) a
merge x y = runMerge $ unfold (buildMerge (length x) (length y)) (Merge 0 0 (elementAt x) (elementAt y))
merge x y = runMerge $ unfold (buildMerge (length x) (length y)) (Merge 0 0 (elementAt x) (elementAt y))