{-# LANGUAGE ViewPatterns, OverloadedStrings, FlexibleContexts #-} module Utils ( showEntity , apply, apply' ) where import Data.Text (Text) import qualified Data.Text as Text import Data.Monoid (Monoid(..), (<>)) import Control.Monad.State.Class import Control.Monad.Writer.Class import Types showEntity :: Entity -> Text showEntity (Entity name number) | (Just (show -> n)) <- number = name <> " № " <> Text.pack n | otherwise = name apply' :: (MonadState Sequence m, MonadWriter History m) => Alteration -> m () apply' alteration = do (newSt, hist) <- apply alteration <$> get tell hist put newSt apply :: Alteration -> Sequence -> (Sequence, History) apply alteration seq = undefined