diff options
| author | Inari Listenmaa <inari.listenmaa@gmail.com> | 2018-06-15 14:31:21 +0200 |
|---|---|---|
| committer | Inari Listenmaa <inari.listenmaa@gmail.com> | 2018-06-15 14:31:21 +0200 |
| commit | 9d2b92dbc1d9e221ce180497cd7d04e0757650a9 (patch) | |
| tree | 01ea74d4e1ba6a4cea565d263369da9b4947a4b0 /src/tools/gftest/EqRel.hs | |
| parent | 2d9240e0365161cb97accb75ccace24eb431e07e (diff) | |
Split gftest to a new repo
Diffstat (limited to 'src/tools/gftest/EqRel.hs')
| -rw-r--r-- | src/tools/gftest/EqRel.hs | 32 |
1 files changed, 0 insertions, 32 deletions
diff --git a/src/tools/gftest/EqRel.hs b/src/tools/gftest/EqRel.hs deleted file mode 100644 index 823900ae0..000000000 --- a/src/tools/gftest/EqRel.hs +++ /dev/null @@ -1,32 +0,0 @@ -module EqRel where - -import qualified Data.Map as M -import Data.List ( sort ) - -data EqRel a = Top | Classes [[a]] deriving (Eq,Ord,Show) - -(/\) :: (Ord a) => EqRel a -> EqRel a -> EqRel a -Top /\ r = r -r /\ Top = r -Classes xss /\ Classes yss = Classes $ sort $ map sort $ concat -- maybe throw away singleton lists? - [ M.elems tabXs - | xs <- xss - , let tabXs = M.fromListWith (++) - [ (tabYs M.! x, [x]) - | x <- xs ] - ] - - where - tabYs = M.fromList [ (y,representative) - | ys <- yss - , let representative = head ys - , y <- ys ] - -basic :: (Ord a) => [a] -> EqRel Int -basic xs = Classes $ sort $ map sort $ M.elems $ M.fromListWith (++) - [ (x,[i]) | (x,i) <- zip xs [0..] ] - -rep :: EqRel Int -> Int -> Int -rep Top j = 0 -rep (Classes xss) j = head [ head xs | xs <- xss, j `elem` xs ] - |
