From 6572b1278fdc165d20efe4eeea09a065ac86039e Mon Sep 17 00:00:00 2001 From: Robert Klotzner Date: Tue, 8 Mar 2016 08:56:15 +0100 Subject: [PATCH 1/2] Added generic instance for Unit --- src/Data/Generic.purs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/Data/Generic.purs b/src/Data/Generic.purs index 502c7d1..372c85c 100755 --- a/src/Data/Generic.purs +++ b/src/Data/Generic.purs @@ -139,6 +139,13 @@ isValidSpine (SigRecord fieldSigs) (SRecord fieldVals) = (sortBy (\a b -> compare a.recLabel b.recLabel) fieldVals) isValidSpine _ _ = false + +instance genericUnit :: Generic Unit where + toSpine _ = SRecord [] + toSignature _ = SigRecord [] + fromSpine (SRecord []) = Just unit + fromSpine _ = Nothing + instance genericNumber :: Generic Number where toSpine x = SNumber x toSignature _ = SigNumber From 1180aeaa90493cc37980657ddc602b72b66a9b2b Mon Sep 17 00:00:00 2001 From: Robert Klotzner Date: Thu, 10 Mar 2016 10:31:02 +0100 Subject: [PATCH 2/2] Changed generic representation of Unit to Prelude.Unit. Just pretend that we have the straightforward definition, one suspects. --- src/Data/Generic.purs | 8 +++++--- test/Main.purs | 1 + 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/Data/Generic.purs b/src/Data/Generic.purs index 372c85c..e72e596 100755 --- a/src/Data/Generic.purs +++ b/src/Data/Generic.purs @@ -141,9 +141,11 @@ isValidSpine _ _ = false instance genericUnit :: Generic Unit where - toSpine _ = SRecord [] - toSignature _ = SigRecord [] - fromSpine (SRecord []) = Just unit + toSpine _ = SProd "Prelude.Unit" [] + toSignature _ = SigProd "Prelude.Unit" [{ sigConstructor : "Prelude.Unit" + , sigValues : [] + }] + fromSpine (SProd "Prelude.Unit" []) = Just unit fromSpine _ = Nothing instance genericNumber :: Generic Number where diff --git a/test/Main.purs b/test/Main.purs index 1160f45..46f25c6 100755 --- a/test/Main.purs +++ b/test/Main.purs @@ -57,6 +57,7 @@ main = do , Corge ['H', 'i', ' ', 'D', 'e', 'r', 'e'] ] log "Testing Show GenericSignature instance:" + print (toSignature (Proxy :: Proxy Unit)) print (toSignature (Proxy :: Proxy Number)) print (toSignature (Proxy :: Proxy Char)) print (toSignature (Proxy :: Proxy (Array (Array Number))))