[GHC] #10867: Primop types should not mention ()
GHC
ghc-devs at haskell.org
Fri Sep 11 11:38:23 UTC 2015
#10867: Primop types should not mention ()
-------------------------------------+-------------------------------------
Reporter: simonpj | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 7.10.2
Keywords: | Operating System: Unknown/Multiple
Architecture: | Type of failure: None/Unknown
Unknown/Multiple |
Test Case: | Blocked By:
Blocking: | Related Tickets:
Differential Revisions: |
-------------------------------------+-------------------------------------
I've just noticed that two primpops have types that mention tuples (see
`compiler/prelude/primops.txt.pp`):
{{{
primop FinalizeWeakOp "finalizeWeak#" GenPrimOp
Weak# a -> State# RealWorld -> (# State# RealWorld, Int#,
(State# RealWorld -> (# State# RealWorld, () #)) #)
primop Check "check#" GenPrimOp
(State# RealWorld -> (# State# RealWorld, a #) )
-> (State# RealWorld -> (# State# RealWorld, () #) )
}}}
But they really really shouldn't. The unit tuple is a type defined in
Haskell, and it makes an awkward cycle if the supposedly-truly-primitive
primpops refer to it. (Discovered during the saga of [Phab:D757].)
Most primpops do not do this; eg
{{{
primop WriteMutVarOp "writeMutVar#" GenPrimOp
MutVar# s a -> a -> State# s -> State# s
}}}
Now `check#` and `finalizeWeak#` are pretty obscure primops and I don't
think anyone will mind if I fix their type signatures.
But in addition to doing that, I'll have to look at their implementations.
'''But where ''are'' those implementations??''' I can't find anything in
the RTS.
While thinking about it
* Both come with literally zero Haddock documentation which is terrible.
The type of both is pretty obscure.
* `check#` is a very short name for very specialised STM operation.
Surely we should call it `addSTMInvariant` or something like that?
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10867>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list