0 | module Text.Show.PrettyVal
5 | import Text.Show.Value
11 | interface PrettyVal a where
12 | constructor MkPrettyVal
13 | prettyVal : a -> Value
20 | PrettyVal Void where
21 | prettyVal v impossible
24 | PrettyVal Value where
29 | prettyVal _ = Con "()" []
32 | PrettyVal Bits8 where
33 | prettyVal = Natural . show
36 | PrettyVal Bits16 where
37 | prettyVal = Natural . show
40 | PrettyVal Bits32 where
41 | prettyVal = Natural . show
44 | PrettyVal Bits64 where
45 | prettyVal = Natural . show
49 | prettyVal = Natural . show
51 | mkNum : (Ord a, Neg a, Num a, Show a)
52 | => (String -> Value) -> a -> Value
53 | mkNum c x = if x >= 0 then c (show x)
54 | else Neg . c . show $
negate x
58 | prettyVal = mkNum Natural
61 | PrettyVal Int8 where
62 | prettyVal = mkNum Natural
65 | PrettyVal Int16 where
66 | prettyVal = mkNum Natural
69 | PrettyVal Int32 where
70 | prettyVal = mkNum Natural
73 | PrettyVal Int64 where
74 | prettyVal = mkNum Natural
77 | PrettyVal Integer where
78 | prettyVal = mkNum Natural
81 | PrettyVal Double where
82 | prettyVal = mkNum Dbl
85 | PrettyVal Char where
86 | prettyVal = Chr . show
89 | PrettyVal String where
90 | prettyVal = Str . show
93 | PrettyVal a => PrettyVal (List a) where
94 | prettyVal = Lst . map prettyVal
97 | PrettyVal a => PrettyVal (Vect n a) where
98 | prettyVal = Lst . toList . map prettyVal
101 | (PrettyVal a, PrettyVal b) => PrettyVal (a,b) where
102 | prettyVal (a,b) = case prettyVal b of
103 | Tuple v1 v2 vs => Tuple (prettyVal a) v1 (v2 :: vs)
104 | val => Tuple (prettyVal a) val []