Update test code

This commit is contained in:
Danila Fedorin 2023-03-04 19:01:57 -08:00
parent e08de1f8f7
commit 2facde2377
1 changed files with 4 additions and 8 deletions

View File

@ -4,12 +4,11 @@ import Prelude
import Control.Alternative (guard, (<|>)) import Control.Alternative (guard, (<|>))
import Control.Monad.Logic.Class (class MonadLogic, interleave) import Control.Monad.Logic.Class (class MonadLogic, interleave)
import Control.Monad.Logic.Trans (SFKT, runSFKT) import Control.Monad.Logic.Trans (runSFKT)
import Control.Monad.Reader.Class (class MonadReader) import Control.Monad.Reader.Class (class MonadReader)
import Control.Monad.Reader.Trans (runReaderT, ask) import Control.Monad.Reader.Trans (runReaderT, ask)
import Control.Monad.State.Class (class MonadState) import Control.Monad.State.Class (class MonadState)
import Control.Monad.State.Trans (runStateT, put, get) import Control.Monad.State.Trans (runStateT, put, get)
import Data.List (List(..), (:))
import Data.Maybe (Maybe) import Data.Maybe (Maybe)
import Data.Tuple (fst) import Data.Tuple (fst)
import Data.Tuple.Nested(type (/\), (/\)) import Data.Tuple.Nested(type (/\), (/\))
@ -26,17 +25,14 @@ test =
newState <- get newState <- get
pure ((offset+n) /\ (oldState <> " became " <> newState)) pure ((offset+n) /\ (oldState <> " became " <> newState))
solutions :: forall a m. Monad m => SFKT m a -> m (List a)
solutions m = runSFKT m ((<$>) <<< (:)) (pure Nil)
order1 :: Maybe String order1 :: Maybe String
order1 = show <$> (runReaderT (solutions (fst <$> runStateT (test >>= \(x /\ s) -> guard (x `mod` 2 == 1) >>= \_ -> pure (x /\ s)) "initial")) 11) order1 = show <$> (runReaderT (runSFKT (fst <$> runStateT (test >>= \(x /\ s) -> guard (x `mod` 2 == 1) >>= \_ -> pure (x /\ s)) "initial")) 11)
order2 :: Maybe String order2 :: Maybe String
order2 = show <$> fst <$> (runStateT (runReaderT (solutions (test >>= \(x /\ s) -> guard (x `mod` 2 == 1) >>= \_ -> pure (x /\ s))) 11) "initial") order2 = show <$> fst <$> (runStateT (runReaderT (runSFKT (test >>= \(x /\ s) -> guard (x `mod` 2 == 1) >>= \_ -> pure (x /\ s))) 11) "initial")
order3 :: Maybe String order3 :: Maybe String
order3 = show <$> fst <$> (runStateT (runReaderT (solutions test) 0) "initial") order3 = show <$> fst <$> (runStateT (runReaderT (runSFKT test) 0) "initial")
main :: Maybe String main :: Maybe String
main = order1 main = order1