{-# LANGUAGE Rank2Types, FlexibleContexts, UndecidableInstances, TypeSynonymInstances #-} {-# OPTIONS_GHC -fno-warn-orphans #-} -- | Only exports instances for Show which allows the printing of streams module Language.Copilot.PrettyPrinter () where import Data.Int import Data.Word import Data.Map as M import Language.Copilot.Core instance (Show (a Bool), Show (a Int8), Show (a Int16), Show (a Int32), Show (a Int64), Show (a Word8), Show (a Word16), Show (a Word32), Show (a Word64), Show (a Float), Show (a Double)) => Show (StreamableMaps a) where show (SM bm i8m i16m i32m i64m w8m w16m w32m w64m fm dm) = let acc0 = M.foldrWithKey showVal "" bm acc1 = M.foldrWithKey showVal acc0 i8m acc2 = M.foldrWithKey showVal acc1 i16m acc3 = M.foldrWithKey showVal acc2 i32m acc4 = M.foldrWithKey showVal acc3 i64m acc5 = M.foldrWithKey showVal acc4 w8m acc6 = M.foldrWithKey showVal acc5 w16m acc7 = M.foldrWithKey showVal acc6 w32m acc8 = M.foldrWithKey showVal acc7 w64m acc9 = M.foldrWithKey showVal acc8 fm acc10 = M.foldrWithKey showVal acc9 dm in acc10 where showVal :: (Streamable a, Show (b a)) => Var -> b a -> String -> String showVal v val string = v ++ " .= " ++ show val ++ "\n" ++ string instance Show Streams where show s = show (getSpecs s)