Skip to content

Commit 4ef3a1e

Browse files
authored
Merge pull request #27 from purescript/parity
Add `Parity`
2 parents a0332bb + 117f84e commit 4ef3a1e

File tree

1 file changed

+26
-1
lines changed

1 file changed

+26
-1
lines changed

src/Data/Int.purs

+26-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ module Data.Int
1414
, base36
1515
, fromStringAs
1616
, toStringAs
17+
, Parity(..)
18+
, parity
1719
, even
1820
, odd
1921
, pow
@@ -77,6 +79,29 @@ foreign import toNumber :: Int -> Number
7779
fromString :: String -> Maybe Int
7880
fromString = fromStringAs (Radix 10)
7981

82+
-- | A type for describing whether an integer is even or odd.
83+
data Parity = Even | Odd
84+
85+
derive instance eqParity :: Eq Parity
86+
derive instance ordParity :: Ord Parity
87+
88+
instance showParity :: Show Parity where
89+
show Even = "Even"
90+
show Odd = "Odd"
91+
92+
instance boundedParity :: Bounded Parity where
93+
bottom = Even
94+
top = Odd
95+
96+
-- | Returns whether an `Int` is `Even` or `Odd`.
97+
-- |
98+
-- | ``` purescript
99+
-- | parity 0 == Even
100+
-- | parity 1 == Odd
101+
-- | ```
102+
parity :: Int -> Parity
103+
parity n = if even n then Even else Odd
104+
80105
-- | Returns whether an `Int` is an even number.
81106
-- |
82107
-- | ``` purescript
@@ -90,7 +115,7 @@ even x = x .&. 1 == 0
90115
-- |
91116
-- | ``` purescript
92117
-- | odd 0 == false
93-
-- | odd 1 == false
118+
-- | odd 1 == true
94119
-- | ```
95120
odd :: Int -> Boolean
96121
odd x = x .&. 1 /= 0

0 commit comments

Comments
 (0)