{-# 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 (Int -> Variable -> ShowS) -> (Variable -> String) -> ([Variable] -> ShowS) -> Show Variable 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" Builder -> Builder -> Builder forall a. Semigroup a => a -> a -> a <> Text -> Builder Data.Text.Lazy.Builder.fromLazyText Text name Builder -> Builder -> Builder forall a. Semigroup a => a -> a -> a <> Builder "\n" Builder -> Builder -> Builder forall a. Semigroup a => a -> a -> a <> Int -> Builder forall a. Integral a => a -> Builder Data.Text.Lazy.Builder.Int.decimal Int axiomLayer Builder -> Builder -> Builder forall a. Semigroup a => a -> a -> a <> Builder "\n" Builder -> Builder -> Builder forall a. Semigroup a => a -> a -> a <> Int -> Builder forall a. Integral a => a -> Builder Data.Text.Lazy.Builder.Int.decimal ( Seq Text -> Int forall a. Seq a -> Int Seq.length Seq Text domain ) Builder -> Builder -> Builder forall a. Semigroup a => a -> a -> a <> Builder "\n" Builder -> Builder -> Builder forall a. Semigroup a => a -> a -> a <> (Text -> Builder) -> Seq Text -> Builder 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 Builder -> Builder -> Builder forall a. Semigroup a => a -> a -> a <> Builder "\n" ) Seq Text domain Builder -> Builder -> Builder forall a. Semigroup a => a -> a -> a <> Builder "end_variable"