From 743afad53ad777293bd49a5d30fffd308ca6b89f Mon Sep 17 00:00:00 2001 From: Gary Burgess Date: Fri, 30 Jun 2017 15:33:06 +0100 Subject: [PATCH 1/2] Add `Parity` --- src/Data/Int.purs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/Data/Int.purs b/src/Data/Int.purs index fdfef54..f98a682 100644 --- a/src/Data/Int.purs +++ b/src/Data/Int.purs @@ -14,6 +14,8 @@ module Data.Int , base36 , fromStringAs , toStringAs + , Parity(..) + , parity , even , odd , pow @@ -77,6 +79,21 @@ foreign import toNumber :: Int -> Number fromString :: String -> Maybe Int fromString = fromStringAs (Radix 10) +-- | A type for describing whether an integer is even or odd. +data Parity = Even | Odd + +derive instance eqParity :: Eq Parity +derive instance ordParity :: Ord Parity + +-- | Returns whether an `Int` is `Even` or `Odd`. +-- | +-- | ``` purescript +-- | parity 0 == Even +-- | parity 1 == Odd +-- | ``` +parity :: Int -> Parity +parity n = if even n then Even else Odd + -- | Returns whether an `Int` is an even number. -- | -- | ``` purescript @@ -90,7 +107,7 @@ even x = x .&. 1 == 0 -- | -- | ``` purescript -- | odd 0 == false --- | odd 1 == false +-- | odd 1 == true -- | ``` odd :: Int -> Boolean odd x = x .&. 1 /= 0 From 117f84e9695be9854599f412e23717b7d2818929 Mon Sep 17 00:00:00 2001 From: Gary Burgess Date: Fri, 30 Jun 2017 15:46:10 +0100 Subject: [PATCH 2/2] Add `Show` and `Bounded` instances for `Parity` --- src/Data/Int.purs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/Data/Int.purs b/src/Data/Int.purs index f98a682..448c9c7 100644 --- a/src/Data/Int.purs +++ b/src/Data/Int.purs @@ -85,6 +85,14 @@ data Parity = Even | Odd derive instance eqParity :: Eq Parity derive instance ordParity :: Ord Parity +instance showParity :: Show Parity where + show Even = "Even" + show Odd = "Odd" + +instance boundedParity :: Bounded Parity where + bottom = Even + top = Odd + -- | Returns whether an `Int` is `Even` or `Odd`. -- | -- | ``` purescript