@@ -70,12 +70,9 @@ attributeForName attrName attrs = case V.find ((attrName ==) . attributeName) at
70 Just attr -> Right attr
70 Just attr -> Right attr
72attributesForNames :: S.Set AttributeName -> Attributes -> Attributes
72attributesForNames :: S.Set AttributeName -> Attributes -> Attributes
73−attributesForNames attrNameSet attrs = V.foldr folder V.empty attrs
73+attributesForNames attrNameSet attrs = V.filter filt attrs
75− folder attr acc = if S.member (attributeName attr) attrNameSet then
75+ filt attr = S.member (attributeName attr) attrNameSet
80attributeNameSet :: Attributes -> S.Set AttributeName
77attributeNameSet :: Attributes -> S.Set AttributeName
81attributeNameSet attrVec = S.fromList $ V.toList $ V.map (\(Attribute name _) -> name) attrVec
78attributeNameSet attrVec = S.fromList $ V.toList $ V.map (\(Attribute name _) -> name) attrVec
@@ -117,3 +114,5 @@ verifyAttributes attrs = if collapsedAttrs /= attrs then
118 collapsedAttrs = vectorUniqueify attrs
115 collapsedAttrs = vectorUniqueify attrs
117+attributesEqual :: Attributes -> Attributes -> Bool
118+attributesEqual attrs1 attrs2 = V.null (attributesDifference attrs1 attrs2)