{-# LANGUAGE NegativeLiterals, MagicHash, BinaryLiterals #-} module NegativeLiterals where import GHC.Exts ------------------------------------ -- Prefix occurrence of the minus -- ------------------------------------ p1 :: Bool p1 = even -2 -- parsed as: even (-2) p2 :: Int p2 = I# -1# -- parsed as: I# (-1#) p3 :: Int p3 = floor -2.4 -- parsed as: floor (-2.4) p4 :: Float p4 = F# -0.01# -- parsed as: F# (-0.01#) p5 :: Double p5 = D# -0.01## -- parsed as: D# (-0.01##) p6 :: Bool p6 = even -0b10 -- parsed as: even (-2) || even -0o10 -- parsed as: even (-8) || even -0x10 -- parsed as: even (-16) ----------------------------------------- -- Tight infix occurrence of the minus -- ----------------------------------------- ti1 :: Integer -> Integer ti1 x = x-2 -- parsed as: (-) x 1 ti2 :: Int# -> Int# ti2 x = x-1# -- parsed as: (-) x 1# where (-) = (-#) ti3 :: Double -> Double ti3 x = x-2.4 -- parsed as: (-) x 2.4 ti4 :: Float# -> Float# ti4 x = x-0.1# -- parsed as: (-) x 0.1# where (-) = minusFloat# ti5 :: Double# -> Double# ti5 x = x-0.1## -- parsed as: (-) x 0.1## where (-) = (-##) ti6 :: Integer -> [Integer] ti6 x = [ x-0b10, -- parsed as: (-) x 2 x-0o10, -- parsed as: (-) x 8 x-0x10 ] -- parsed as: (-) x 16