Unhelpful error messages about lifted and unlifted types
I wrote this code:
{-# LANGUAGE MagicHash #-}
import GHC.Prim
import GHC.Types
main = do
let primDouble = 0.42## :: Double#
let double = 0.42 :: Double
IO (\s -> mkWeakNoFinalizer# double () s)
and I get this error message:
WeakDouble.hs:8:15: error:
• Couldn't match a lifted type with an unlifted type
Expected type: (# State# RealWorld, Weak# () #)
Actual type: (# State# RealWorld, Weak# () #)
• In the expression: mkWeakNoFinalizer# double () s
In the first argument of ‘IO’, namely
‘(\ s -> mkWeakNoFinalizer# double () s)’
In a stmt of a 'do' block:
IO (\ s -> mkWeakNoFinalizer# double () s)
with -fprint-explicit-kinds
. (Without the flag, it looks the same, but tells me to use this flag…).
Trac metadata
Trac field | Value |
---|---|
Version | 8.1 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler (Type checker) |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | goldfire |
Operating system | |
Architecture |