Hi Ben, Thanks for the reply > Incidentally, the collapse of LiftedRep and UnliftedRep will happen in > GHC 9.2 (turning into `BoxedRep :: Levity -> RuntimeRep`).
Yes I believe this change was accidentally merged a few months ago then reverted? I will keep that in mind. > Can you provide a program that your patch rejects, as well as > the full error that is produced? My error is in stage 1 in the building of the ghc-bignum library. I have attached the full error as well as the patch itself. Thanks, Shant On Mon, Apr 5, 2021 at 7:41 PM Ben Gamari <[email protected]> wrote: > Shant Hairapetian <[email protected]> writes: > > > Hello, > > > > I’m a master’s student working on implementing the changes outlined in > > “Kinds are Calling Conventions“ ( > > https://www.microsoft.com/en-us/research/uploads/prod/2020/03/kacc.pdf). > I > > have been working directly with Paul Downen but have hit some roadblocks. > > > > To sum up the changes to the kind system, I am attempting to modify the > > “TYPE” type constructor to accept, rather than just a RuntimeRep, a > record > > type (called RuntimeInfo) comprised of a RuntimeRep and a CallingConv > > (calling convention). The calling convention has an “Eval” constructor > > which accepts a levity (effectively moving the levity information from > the > > representation to the calling convention. LiftedRep and UnliftedRep would > > also be collapsed into a single PtrRep constructor) and a “Call” > > constructor (denoting the arity of primitive, extensional functions, > > see: Making > > a Faster Curry with Extensional Types > > < > https://www.microsoft.com/en-us/research/uploads/prod/2019/07/arity-haskell-symposium-2019.pdf > >) > > which accepts a list of RuntimeRep’s. I have created and wired-in the new > > RuntimeInfo and CallingConv types in GHC.Builtin.Types, as well as the > > corresponding primitive types in GHC.Builtin.Types.Prim and have modified > > the “TYPE” constructor to accept a RuntimeInfo rather than a RuntimeRep. > > > Hi Shant, > > It would be helpful to have a bit more information on the nature of your > failure. Can you provide a program that your patch rejects, as well as > the full error that is produced? > > Incidentally, the collapse of LiftedRep and UnliftedRep will happen in > GHC 9.2 (turning into `BoxedRep :: Levity -> RuntimeRep`). > > Cheers, > > - Ben > > -- Shant Hairapetian
libraries/ghc-bignum/src/GHC/Num/WordArray.hs:78:22: error:
• Couldn't match type: 'TupleRep ('[] @RuntimeRep)
with: 'RInfo ('TupleRep ('[] @RuntimeRep))
'GHC.Types.ConvEval
Expected: (# State# s, MutableWordArray# s #)
Actual: (# State# s, MutableByteArray# s #)
• In the expression: newByteArray# (wordsToBytes# sz) s
In an equation for ‘newWordArray#’:
newWordArray# sz s = newByteArray# (wordsToBytes# sz) s
|
78 | newWordArray# sz s = newByteArray# (wordsToBytes# sz) s
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
libraries/ghc-bignum/src/GHC/Num/WordArray.hs:112:71: error:
• Couldn't match a lifted type with an unlifted type
When matching types
b0 :: TYPE ('RInfo 'LiftedRep 'GHC.Types.ConvEval)
WordArray# :: TYPE ('RInfo 'UnliftedRep 'GHC.Types.ConvEval)
Expected: (# () | WordArray# #)
Actual: (# () | b0 #)
• In the expression: a
In a case alternative: (# _, a #) -> a
In the expression: case runRW# io of { (# _, a #) -> a }
• Relevant bindings include
a :: (# () | b0 #)
(bound at libraries/ghc-bignum/src/GHC/Num/WordArray.hs:112:63)
|
112 | withNewWordArrayTrimedMaybe# sz act = case runRW# io of (# _, a #) ->
a
|
^
libraries/ghc-bignum/src/GHC/Num/WordArray.hs:117:40: error:
• Couldn't match kind ‘RuntimeInfo’ with ‘RuntimeRep’
When matching the kind of ‘'RInfo 'LiftedRep 'GHC.Types.ConvEval’
• In the expression: ()
In the expression: (# () | #)
In the expression: (# s, (# () | #) #)
|
117 | (# s, 0# #) -> (# s, (# () | #) #)
| ^^
libraries/ghc-bignum/src/GHC/Num/WordArray.hs:120:48: error:
• Couldn't match kind ‘RuntimeInfo’ with ‘RuntimeRep’
When matching kinds
'RInfo 'LiftedRep 'GHC.Types.ConvEval :: RuntimeInfo
'RInfo 'UnliftedRep 'GHC.Types.ConvEval :: RuntimeInfo
• In the expression: ba
In the expression: (# | ba #)
In the expression: (# s, (# | ba #) #)
|
120 | (# s, ba #) -> (# s, (# | ba #) #)
| ^^
libraries/ghc-bignum/src/GHC/Num/WordArray.hs:431:31: error:
• Couldn't match type: 'TupleRep ('[] @RuntimeRep)
with: 'RInfo ('TupleRep ('[] @RuntimeRep))
'GHC.Types.ConvEval
Expected: (# State# s, Word# #)
Actual: (# State# s, Word# #)
• In the expression: readWordArray# mwa i s2
In a case alternative:
(# s2, sz #)
| isTrue# (i >=# sz) -> (# s2, 0## #)
| isTrue# (i <# 0#) -> (# s2, 0## #)
| True -> readWordArray# mwa i s2
In the expression:
case mwaSize# mwa s of {
(# s2, sz #)
| isTrue# (i >=# sz) -> (# s2, 0## #)
| isTrue# (i <# 0#) -> (# s2, 0## #)
| True -> readWordArray# mwa i s2 }
|
431 | | True -> readWordArray# mwa i s2
| ^^^^^^^^^^^^^^^^^^^^^^^
libraries/ghc-bignum/src/GHC/Num/WordArray.hs:434:12: error:
• Couldn't match type: 'TupleRep ('[] @RuntimeRep)
with: 'RInfo ('TupleRep ('[] @RuntimeRep))
'GHC.Types.ConvEval
Expected: MutableWordArray# s
-> Int# -> State# s -> (# State# s, Word# #)
Actual: MutableByteArray# s
-> Int# -> State# s -> (# State# s, Word# #)
• In the expression: readWordArray#
In an equation for ‘mwaRead#’: mwaRead# = readWordArray#
|
434 | mwaRead# = readWordArray#
KACC.patch
Description: Binary data
_______________________________________________ ghc-devs mailing list [email protected] http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
