{-# language OverloadedStrings #-} {-# language RecordWildCards #-} module FastDownward.SAS.Goal ( Goal(..), toSAS ) where import Data.Sequence ( Seq ) import qualified Data.Sequence as Seq import qualified Data.Text.Lazy.Builder import qualified Data.Text.Lazy.Builder.Int import FastDownward.SAS.VariableAssignment ( VariableAssignment ) import qualified FastDownward.SAS.VariableAssignment as VariableAssignment newtype Goal = Goal { Goal -> Seq VariableAssignment finalAssignments :: Seq VariableAssignment } deriving ( Int -> Goal -> ShowS [Goal] -> ShowS Goal -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [Goal] -> ShowS $cshowList :: [Goal] -> ShowS show :: Goal -> String $cshow :: Goal -> String showsPrec :: Int -> Goal -> ShowS $cshowsPrec :: Int -> Goal -> ShowS Show ) toSAS :: Goal -> Data.Text.Lazy.Builder.Builder toSAS :: Goal -> Builder toSAS Goal{Seq VariableAssignment finalAssignments :: Seq VariableAssignment finalAssignments :: Goal -> Seq VariableAssignment ..} = Builder "begin_goal\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 VariableAssignment finalAssignments ) 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 ( \VariableAssignment x -> VariableAssignment -> Builder VariableAssignment.toSAS VariableAssignment x forall a. Semigroup a => a -> a -> a <> Builder "\n" ) Seq VariableAssignment finalAssignments forall a. Semigroup a => a -> a -> a <> Builder "end_goal"