{-# LANGUAGE MagicHash #-} import GHC.Exts f :: Float# -> Float# f x = x {-# NOINLINE f #-} g :: Double# -> Double# g x = x {-# NOINLINE g #-} h :: Float -> Float h (F# x) = let a = F# (f x) b = D# (g (2.0##)) in a `seq` (b `seq` a) main = print (h 1.0)