on 44ec3cd help sign in
project-m36/RelationTupleSet.hs
23 lines 777 B history raw
1module RelationTupleSet where
2import RelationType
3import RelationTuple
4import RelationalError
5import qualified Data.Map as M
6import qualified Data.HashSet as HS
7import Control.Monad
9emptyTupleSet = HS.empty
10emptyAttributeSet = M.empty
12--ensure that all maps have the same keys and key count
14verifyRelationTupleSet :: Attributes -> RelationTupleSet -> Either RelationalError RelationTupleSet
15verifyRelationTupleSet attrs tupleSet = do
16 --check that all tuples have the same types
17 tupleList <- forM (HS.toList tupleSet) verifyTuple
18 return $ HS.fromList tupleList
19 where
20 verifyTuple tuple = if tupleAttributes tuple == attrs then
21 Right tuple
22 else
23 Left $ TupleAttributeTypeMismatchError 0