module Drasil.Projectile.Lesson.Example where import Data.Drasil.Concepts.Physics (velocity, height, time, acceleration, gravity, horizontalMotion) import qualified Data.Drasil.Quantities.Physics as QP (height, gravitationalAccel) import Data.Drasil.Units.Physics (velU) import Language.Drasil.ShortHands (cR, lG) import Language.Drasil import qualified Language.Drasil.Sentence.Combinators as S exampleContent :: [Contents] exampleContent :: [Contents] exampleContent = [Contents exampleContextP1, Contents codeC1, Contents exampleContextP2, Contents codeC2, Contents exampleContextP3, Contents codeC3] exampleContextP1, exampleContextP2, exampleContextP3 :: Contents exampleContextP1 :: Contents exampleContextP1 = [Sentence] -> Contents foldlSP_ [String -> Sentence S String "A sack slides off the ramp" Sentence -> Sentence -> Sentence `sC` String -> Sentence S String "shown in Figure.", String -> Sentence S String "We can ignore the physics" Sentence -> Sentence -> Sentence `S.ofThe` String -> Sentence S String "sack sliding down the ramp and just focus on its exit", ConceptChunk -> Sentence forall n. NamedIdea n => n -> Sentence phrase ConceptChunk velocity Sentence -> Sentence -> Sentence +:+. String -> Sentence S String "from the ramp", String -> Sentence S String "There is initially no vertical component" Sentence -> Sentence -> Sentence `S.of_` ConceptChunk -> Sentence forall n. NamedIdea n => n -> Sentence phrase ConceptChunk velocity Sentence -> Sentence -> Sentence `S.andThe` String -> Sentence S String "horizontal", ConceptChunk -> Sentence forall n. NamedIdea n => n -> Sentence phrase ConceptChunk velocity, String -> Sentence S String "is:"] exampleContextP2 :: Contents exampleContextP2 = [Sentence] -> Contents foldlSP_ [String -> Sentence S String "The", ConceptChunk -> Sentence forall n. NamedIdea n => n -> Sentence phrase ConceptChunk height Sentence -> Sentence -> Sentence `S.ofThe` String -> Sentence S String "ramp from the floor is"] exampleContextP3 :: Contents exampleContextP3 = [Sentence] -> Contents foldlSP_ [String -> Sentence S String "Task: Determine the", ConceptChunk -> Sentence forall n. NamedIdea n => n -> Sentence phrase ConceptChunk time, String -> Sentence S String "needed for the sack to strike the floor and the range", Symbol -> Sentence P Symbol cR Sentence -> Sentence -> Sentence +:+. String -> Sentence S String "where sacks begin to pile up", String -> Sentence S String "The", ConceptChunk -> Sentence forall n. NamedIdea n => n -> Sentence phrase ConceptChunk acceleration, String -> Sentence S String "due to", ConceptChunk -> Sentence forall n. NamedIdea n => n -> Sentence phrase ConceptChunk gravity, Symbol -> Sentence P Symbol lG Sentence -> Sentence -> Sentence +:+. String -> Sentence S String "is assumed to have the following value"] codeC1, codeC2, codeC3 :: Contents codeC1 :: Contents codeC1 = CodeExpr -> Contents unlbldCode (UnitalChunk -> CodeExpr forall c. (HasUID c, HasSymbol c) => c -> CodeExpr forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r sy UnitalChunk horiz_velo CodeExpr -> CodeExpr -> CodeExpr forall r. ExprC r => r -> r -> r $= Integer -> CodeExpr forall r. LiteralC r => Integer -> r exactDbl Integer 17) codeC2 :: Contents codeC2 = CodeExpr -> Contents unlbldCode (UnitalChunk -> CodeExpr forall c. (HasUID c, HasSymbol c) => c -> CodeExpr forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r sy UnitalChunk QP.height CodeExpr -> CodeExpr -> CodeExpr forall r. ExprC r => r -> r -> r $= Integer -> CodeExpr forall r. LiteralC r => Integer -> r exactDbl Integer 6) codeC3 :: Contents codeC3 = CodeExpr -> Contents unlbldCode (UnitalChunk -> CodeExpr forall c. (HasUID c, HasSymbol c) => c -> CodeExpr forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r sy UnitalChunk QP.gravitationalAccel CodeExpr -> CodeExpr -> CodeExpr forall r. ExprC r => r -> r -> r $= Double -> CodeExpr forall r. LiteralC r => Double -> r dbl Double 9.81) horiz_velo :: UnitalChunk horiz_velo :: UnitalChunk horiz_velo = ConceptChunk -> Symbol -> Space -> UnitDefn -> UnitalChunk forall c u. (Concept c, IsUnit u) => c -> Symbol -> Space -> u -> UnitalChunk uc ConceptChunk horizontalMotion (String -> Symbol variable String "horiz_velo") Space Real UnitDefn velU