@@ -16,10 +16,7 @@ import Data.Argonaut.Encode.Aeson ((>$<), (>/\<))
1616import Data.Argonaut.Encode.Aeson as E
1717import Data.Argonaut.Encode.Class (class EncodeJson , encodeJson )
1818import Data.Argonaut.Encode.Class as Argonaut
19- import Data.Bounded.Generic (genericBottom , genericTop )
2019import Data.Either (Either )
21- import Data.Enum (class Enum )
22- import Data.Enum.Generic (genericPred , genericSucc )
2320import Data.Generic.Rep (class Generic )
2421import Data.Lens (Iso' , Lens' , Prism' , iso , lens , prism' )
2522import Data.Lens.Iso.Newtype (_Newtype )
@@ -66,37 +63,31 @@ bazMessage = _Newtype <<< prop (Proxy :: _"_bazMessage")
6663
6764-- ------------------------------------------------------------------------------
6865
69- data ID a = ID
66+ newtype ID a = ID a
7067
7168instance (EncodeJson a ) => EncodeJson (ID a ) where
72- encodeJson = defer \_ -> E .encode E .enum
69+ encodeJson = defer \_ -> E .encode $ unwrap >$< E .value
7370
7471instance (DecodeJson a , DecodeJsonField a ) => DecodeJson (ID a ) where
75- decodeJson = defer \_ -> D .decode D .enum
72+ decodeJson = defer \_ -> D .decode $ ( ID <$> D .value)
7673
7774derive instance (Eq a ) => Eq (ID a )
7875
7976derive instance (Ord a ) => Ord (ID a )
8077
8178
8279
83- instance Show (ID a ) where
80+ instance ( Show a ) => Show (ID a ) where
8481 show a = genericShow a
8582
8683derive instance Generic (ID a ) _
8784
88- instance Enum (ID a ) where
89- succ = genericSucc
90- pred = genericPred
91-
92- instance Bounded (ID a ) where
93- bottom = genericBottom
94- top = genericTop
85+ derive instance Newtype (ID a ) _
9586
9687-- ------------------------------------------------------------------------------
9788
98- _ID :: forall a . Iso' (ID a ) Unit
99- _ID = iso (const unit) (const ID )
89+ _ID :: forall a . Iso' (ID a ) a
90+ _ID = _Newtype
10091
10192-- ------------------------------------------------------------------------------
10293
0 commit comments