dataLeftJoin :: (Ord a) => RightCollapsed a b -> [a] -> WeakCollapsed a b
dataLeftJoin (RightCollapsed xs) as = WeakCollapsed $ lookupTuple xsMap <$> as
    where
        xsMap = M.fromList $ second NE.toList <$> xs
        lookupTuple cMap x = (,) x $ fromMaybe [] $ M.lookup x cMap
dataLeftJoin :: (Ord a) => RightCollapsed a b -> [a] -> WeakCollapsed a b
dataLeftJoin (RightCollapsed xs) as = WeakCollapsed $ lookupTuple xsMap <$> as
    where
        xsMap = M.fromList $ second NE.toList <$> xs
        lookupTuple cMap x = (,) x $ fromMaybe [] $ M.lookup x cMap
dataLeftJoin (RightCollapsed xs) as = WeakCollapsed $ lookupTuple xsMap <$> as
    where
        xsMap = M.fromList $ second NE.toList <$> xs
        lookupTuple cMap x = (,) x $ fromMaybe [] $ M.lookup x cMap