From 22bec3873b552cc82068fa8a854d7d0c042a2cb7 Mon Sep 17 00:00:00 2001 From: Joshua Moerman Date: Mon, 29 Apr 2024 17:42:54 +0200 Subject: [PATCH] nothing really --- app/Main.hs | 3 ++- mealy-decompose.cabal | 1 - src/LStar.hs | 13 ++++--------- src/Merger.hs | 4 ++-- 4 files changed, 8 insertions(+), 13 deletions(-) diff --git a/app/Main.hs b/app/Main.hs index fa11877..b682df4 100644 --- a/app/Main.hs +++ b/app/Main.hs @@ -19,7 +19,8 @@ import Data.Tuple (swap) import System.Environment import Text.Megaparsec -converseRelation :: (Ord a, Ord b) => Map.Map a b -> Map.Map b [a] + +converseRelation :: Ord b => Map.Map a b -> Map.Map b [a] converseRelation m = Map.fromListWith (++) . fmap (second pure . swap) . Map.assocs $ m myWriteFile :: FilePath -> String -> IO () diff --git a/mealy-decompose.cabal b/mealy-decompose.cabal index f876e58..e303781 100644 --- a/mealy-decompose.cabal +++ b/mealy-decompose.cabal @@ -19,7 +19,6 @@ common stuff default-language: GHC2021 default-extensions: RecordWildCards - ghc-options: -Wall library import: stuff diff --git a/src/LStar.hs b/src/LStar.hs index de7d5ea..61545eb 100644 --- a/src/LStar.hs +++ b/src/LStar.hs @@ -7,11 +7,11 @@ import Control.Monad.Trans.Class import Control.Monad.Trans.State.Strict import Data.Foldable (minimumBy) -import Data.Function (on) import Data.Functor.Identity -import Data.List (tails) -import Data.Map.Strict qualified as Map +import Data.List (tails, stripPrefix) import Data.Map.Merge.Strict qualified as MapMerge +import Data.Map.Strict qualified as Map +import Data.Ord (comparing) import Data.Set qualified as Set import Prelude hiding (Word) @@ -165,12 +165,7 @@ makeClosedAndConsistentA mq = loop False where -- eenvoudiger. processCounterexampleA :: (Applicative f, Ord i) => Word i -> MQ f i o -> LStarState i o -> f (LStarState i o) processCounterexampleA ce mq table@LStarState{..} = addColumnsA newSuffixes mq table where - removePrefix [] w2 = Just w2 - removePrefix _ [] = Nothing - removePrefix (a:w1) (b:w2) - | a == b = removePrefix w1 w2 - | otherwise = Nothing - shortestSuffix = minimumBy (compare `on` length) [suf | r <- Set.toList rowIndices, Just suf <- [removePrefix r ce]] + shortestSuffix = minimumBy (comparing length) [suf | r <- Set.toList rowIndices, Just suf <- [stripPrefix r ce]] newSuffixes = filter (not . null) . tails . drop 1 $ shortestSuffix diff --git a/src/Merger.hs b/src/Merger.hs index 6217f02..08eacb1 100644 --- a/src/Merger.hs +++ b/src/Merger.hs @@ -6,9 +6,9 @@ import Control.Monad (replicateM) import Control.Monad.IO.Class (liftIO) import Control.Monad.Trans.State.Strict import Data.Bifunctor (first) -import Data.Function (on) import Data.List (minimumBy) import Data.Map.Strict qualified as Map +import Data.Ord (comparing) import Data.Set qualified as Set data MergerStats = MergerStats @@ -35,7 +35,7 @@ heuristicMerger components strategy = do in ((os, p3), score ps p3) isSortedOn f ls = and $ zipWith (\a b -> f a < f b) ls (drop 1 ls) allCombs n projs = fmap combine . filter (isSortedOn fst) $ replicateM n projs - minComb n projs = minimumBy (compare `on` snd) (allCombs n projs) + minComb n projs = minimumBy (comparing snd) (allCombs n projs) safeStrategy ms@MergerStats{..} | numberOfComponents <= 1 = Stop | otherwise = strategy ms