Help with cast error

Simon Peyton Jones simonpj at microsoft.com
Thu Apr 24 07:58:00 UTC 2014


(a ~ b)  is a boxed, nominal equality.
(a ~R# b)  is an unboxed, representational equality

So it is rightly rejected.

For the boxed/unboxed thing, the paper “practical aspects…” gives more detail.  http://research.microsoft.com/en-us/um/people/simonpj/papers/ext-f/

I think you already know about the nominal/representational distinction.

Simon

From: Glasgow-haskell-users [mailto:glasgow-haskell-users-bounces at haskell.org] On Behalf Of Conal Elliott
Sent: 24 April 2014 01:29
To: glasgow-haskell-users at haskell.org; ghc-devs at haskell.org; Richard Eisenberg; Simon Peyton Jones
Subject: Help with cast error

I'd appreciate help with a cast-related Core Lint error I'm getting with a GHC plugin I'm working on:

    Argument value doesn't match argument type:
    Fun type:
        Enc (Vec ('S 'Z) Bool) ~ (Bool, ()) =>
        EP (Enc (Vec ('S 'Z) Bool)) -> EP (Bool, ())
    Arg type:
        ~R# (Enc (Vec ('S 'Z) Bool)) (Bool, ())
    Arg:
        CO Sub (TFCo:R:EncVec[0] <'Z>_N <Bool>_N)
           ; (Sub TFCo:R:EncBool[0], Sub (TFCo:R:EncVec0[0] <Bool>_N))_R

(I omitted the module prefixes for brevity.) Do I have a role wrong here, or maybe something more fundamental?

I can easily supply more info if it'd help.

Thanks, -- Conal
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/ghc-devs/attachments/20140424/f6382b3d/attachment-0001.html>


More information about the ghc-devs mailing list