content: {-# LANGUAGE MagicHash #-}
  -- !!! Negative unboxed literals, part 1
  -- They don't have to be as standards-compliant
  -- or follow so many weird cases as the normal
  -- boxed version.  In particular, normal unboxed
  -- subtraction is -#, `minusFloat#`, -##, `minusInteger#`
  -- and unboxed negation is negate{Int,Float,Double}#
  -- .  (-) and negate are kind errors.  So we will
  -- assume that we don't need to parse infix (-) nicely
  -- when unboxed numbers are involved (even though someone
  -- "could" hide the Prelude's version and define (-) themself).
  -- Also we won't care here whether having a space (- 3#) works.
  
  -- Make sure the parsing is actually the correct
  -- one by running this after it's compiled.
  
  import GHC.Exts
  
  --is floating-point consistently safe to test like this,
  --if we stick to integral values?
  main = do
    --These work with any ghc
    print (I# (negateInt# (-3# -# -4#)))
    print (F# (negateFloat# (-3.0# `minusFloat#` -4.0#)))
    print (D# (negateDouble# (-3.0## -## -4.0##)))
    print (I# (-3# ^# 4#)) --different from (boxed) Haskell98 (-3 ^ 4)
    print ( case -1# of { -1# -> True } )
    print ( case 1# of { -1# -> True; _ -> False } )
    print ( case -0# of { 0# -> True } )
  
  infixr 8  ^#  --just like ^, binds tighter than - (which is infixl 6)
  ( ^# ) :: Int# -> Int# -> Int#
  base ^# 0# = 1#
  base ^# exponent = base *# (base ^# ( exponent -# 1# ))
  
  