#5499: Tagging constructors with record/product phantom type
----------------------------------+-----------------------------------------
Reporter: basvandijk | Owner:
Type: feature request | Status: new
Priority: normal | Milestone:
Component: libraries (other) | Version: 7.2.1
Keywords: | Testcase:
Blockedby: | Difficulty:
Os: Unknown/Multiple | Blocking:
Architecture: Unknown/Multiple | Failure: None/Unknown
----------------------------------+-----------------------------------------
Comment(by basvandijk):
Replying to [comment:6 dreixel]:
> Right. I believe your `GToJSON` will also need the type-level boolean as
a class argument.
I was hoping I could localize this change only to constructors. I think
it's weird to make a `M1 D` or a `:+:` an instance of `IsRecord`.
"Recordness" (for lack of a better name) is a property of a constructor,
not of a datatype or a sum.
Secondly I see a problem where `GToJSON`
[https://github.com/basvandijk/aeson/blob/5bdf30ed4b32f2cc169f6e4e58d1688bcb02c197/Data/Aeson/Types/Internal.hs#L336
is used]. If `GToJSON` had an extra `b` parameter which value does it get
in:
{{{
class ToJSON a where
toJSON :: a -> Value
default toJSON :: (Generic a, GToJSON (Rep a)) => a -> Value
toJSON = gToJSON . from
}}}
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/5499#comment:7>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs