{-# language OverloadedStrings #-} {-# language RecordWildCards #-} module FastDownward.SAS.Variable ( Variable(..), toSAS ) where import Data.Sequence ( Seq ) import qualified Data.Sequence as Seq import qualified Data.Text.Lazy import qualified Data.Text.Lazy.Builder import qualified Data.Text.Lazy.Builder.Int data Variable = Variable { Variable -> Text name :: Data.Text.Lazy.Text , Variable -> Seq Text domain :: Seq Data.Text.Lazy.Text , Variable -> Int axiomLayer :: Int } deriving ( Int -> Variable -> ShowS [Variable] -> ShowS Variable -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [Variable] -> ShowS $cshowList :: [Variable] -> ShowS show :: Variable -> String $cshow :: Variable -> String showsPrec :: Int -> Variable -> ShowS $cshowsPrec :: Int -> Variable -> ShowS Show ) toSAS :: Variable -> Data.Text.Lazy.Builder.Builder toSAS :: Variable -> Builder toSAS Variable{Int Seq Text Text axiomLayer :: Int domain :: Seq Text name :: Text axiomLayer :: Variable -> Int domain :: Variable -> Seq Text name :: Variable -> Text ..} = Builder "begin_variable\n" forall a. Semigroup a => a -> a -> a <> Text -> Builder Data.Text.Lazy.Builder.fromLazyText Text name forall a. Semigroup a => a -> a -> a <> Builder "\n" forall a. Semigroup a => a -> a -> a <> forall a. Integral a => a -> Builder Data.Text.Lazy.Builder.Int.decimal Int axiomLayer forall a. Semigroup a => a -> a -> a <> Builder "\n" forall a. Semigroup a => a -> a -> a <> forall a. Integral a => a -> Builder Data.Text.Lazy.Builder.Int.decimal ( forall a. Seq a -> Int Seq.length Seq Text domain ) forall a. Semigroup a => a -> a -> a <> Builder "\n" forall a. Semigroup a => a -> a -> a <> forall (t :: * -> *) m a. (Foldable t, Monoid m) => (a -> m) -> t a -> m foldMap ( \Text val -> Text -> Builder Data.Text.Lazy.Builder.fromLazyText Text val forall a. Semigroup a => a -> a -> a <> Builder "\n" ) Seq Text domain forall a. Semigroup a => a -> a -> a <> Builder "end_variable"