{-# 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 { finalAssignments :: Seq VariableAssignment } deriving ( Show ) toSAS :: Goal -> Data.Text.Lazy.Builder.Builder toSAS Goal{..} = "begin_goal\n" <> Data.Text.Lazy.Builder.Int.decimal ( Seq.length finalAssignments ) <> "\n" <> foldMap ( \x -> VariableAssignment.toSAS x <> "\n" ) finalAssignments <> "end_goal"