Proposal: GHC.Generics marked UNSAFE for SafeHaskell

Nicolas Frisby nicolas.frisby at gmail.com
Tue Oct 15 03:20:49 UTC 2013


The formulation as a type family seems to conflict with the open-world
principle. Would a class-based encoding instead be sufficient?

-- the proposed, special wired-in class
class Derives (t :: k1) (c :: k2)

-- GHC would infer these from Pedro's example's declarations
instance Derives MyData Eq
instance Derives MyData Generic
instance Derives MyData Show

NB that there is no instance Derives MyData Ord, but standalone deriving
could yield one "later"

On Mon, Oct 14, 2013 at 10:02 PM, Ryan Newton <rrnewton at gmail.com> wrote:

> Hey, that's an awesome formulation!  Thanks Pedro.
>
> Any idea how much work this would be to implement in GHC, if it did garner
> approval?
>
>
> On Tue, Oct 8, 2013 at 3:48 AM, José Pedro Magalhães <dreixel at gmail.com>wrote:
>
>> Hi,
>>
>> On Mon, Oct 7, 2013 at 10:32 AM, Dag Odenhall <dag.odenhall at gmail.com>wrote:
>>
>>> Here‘s a thought: doesn’t Generic already have an unused phantom type
>>> that's only there “just in case we need to add something in the future”?
>>>
>> No, it doesn't.
>>
>> Just a thought: what if we had a type family
>>
>> type family Derives (t :: k1) (c :: k2) :: Bool
>>
>> which would automatically be instantiated by GHC appropriately? E.g., if
>> the user had the following code:
>>
>> data MyData = MyData deriving (Eq, Generic)
>> deriving instance Show MyData
>> instance Ord MyData
>>
>> GHC would automatically instantiate:
>>
>> type instance Derives MyData Eq      = True
>> type instance Derives MyData Generic = True
>> type instance Derives MyData Show    = True
>> type instance Derives MyData Ord     = False
>>
>> Would this be something Ryan could use for detecting safe instances for
>> LVish?
>>
>>
>> Cheers,
>> Pedro
>>
>> _______________________________________________
>> ghc-devs mailing list
>> ghc-devs at haskell.org
>> http://www.haskell.org/mailman/listinfo/ghc-devs
>>
>>
>
> _______________________________________________
> ghc-devs mailing list
> ghc-devs at haskell.org
> http://www.haskell.org/mailman/listinfo/ghc-devs
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/ghc-devs/attachments/20131014/6d9ea4a4/attachment-0001.html>


More information about the ghc-devs mailing list