@@ -22,6 +22,7 @@ import Data.Union
22import Data.Vector as V
22import Data.Vector as V
23import Data.Vinyl hiding (Dict)
23import Data.Vinyl hiding (Dict)
24import qualified Data.Vinyl.TypeLevel as V
24import qualified Data.Vinyl.TypeLevel as V
25import GHC.Generics (Generic)
26import GHC.Generics (Generic)
26import GHC.TypeLits (SomeNat(..), SomeSymbol(..), someSymbolVal, someNatVal)
27import GHC.TypeLits (SomeNat(..), SomeSymbol(..), someSymbolVal, someNatVal)
27import Prelude as P
28import Prelude as P
@@ -392,6 +393,22 @@ instance Eq (JsonRepr s) => Eq (JsonRepr ('SchemaArray as s)) where
392instance Eq (JsonRepr s) => Eq (JsonRepr ('SchemaOptional s)) where
393instance Eq (JsonRepr s) => Eq (JsonRepr ('SchemaOptional s)) where
393 ReprOptional a == ReprOptional b = a == b
394 ReprOptional a == ReprOptional b = a == b
396+instance IsList (JsonRepr ('SchemaArray cs s)) where
397+ type Item (JsonRepr ('SchemaArray cs s)) = JsonRepr s
398+ fromList = ReprArray . GHC.Exts.fromList
399+ toList (ReprArray v) = GHC.Exts.toList v
401+instance Num (JsonRepr ('SchemaNumber cs)) where
402+ ReprNumber a + ReprNumber b = ReprNumber $ a + b
403+ ReprNumber a - ReprNumber b = ReprNumber $ a - b
404+ ReprNumber a * ReprNumber b = ReprNumber $ a * b
405+ abs (ReprNumber a) = ReprNumber $ abs a
406+ signum (ReprNumber a) = ReprNumber $ signum a
407+ fromInteger = ReprNumber . fromIntegral
409+instance IsString (JsonRepr ('SchemaText cs)) where
410+ fromString = ReprText . fromString
395fromOptional
412fromOptional
396 :: SingI s
413 :: SingI s
397 => Sing ('SchemaOptional s)
414 => Sing ('SchemaOptional s)