module DSL.Shallow (module DSL.Shallow, module DSL.Common) where import DSL.Common {- Describe what a \emph{shallow} implementation could look like. Give a type definition and describe (in words or code) what each of your primitive operations, and your run function, would do. -} type Shallow = Sem newtype Art = Art {run :: Shallow} deriving (Show, Eq) frame :: Art -> Art frame (Art a) = Art (frameSem a) above, beside :: Art -> Art -> Art above (Art a) (Art b) = Art (aboveSem a b) beside (Art a) (Art b) = Art (besideSem a b) text :: Dir -> String -> Art text d s = Art (textSem d s) empty :: Art empty = Art ((0, 0), []) space :: ArtSize -> Art space s = Art (spaceSem s) -- ---------------------------------------------------------------- -- Not in the exam question line :: Int -> Dir -> Art line n Hori = Art $ embed [replicate n '-'] line n Vert = Art $ embed (replicate n "|")