blob: 62d14ab6783fcfb4650f4cfe8ccb77f6ad01a560 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
{-# 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
|