From dd3db073db4f5324f802bc69855f96225668de19 Mon Sep 17 00:00:00 2001 From: Hammy Date: Mon, 5 Apr 2021 00:28:22 +0100 Subject: [PATCH] Implement custom sorting methods --- Unit 1/Lesson 4/AllNames.hs | 8 ++++++++ Unit 1/Lesson 4/customSorting.hs | 22 ++++++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 Unit 1/Lesson 4/AllNames.hs create mode 100644 Unit 1/Lesson 4/customSorting.hs diff --git a/Unit 1/Lesson 4/AllNames.hs b/Unit 1/Lesson 4/AllNames.hs new file mode 100644 index 0000000..181fdcc --- /dev/null +++ b/Unit 1/Lesson 4/AllNames.hs @@ -0,0 +1,8 @@ +module AllNames where + +names :: [([Char], [Char])] +names = [("Callum", "Kilmartin"), + ("Goudham","Suresh"), + ("Theo", "Hardman"), + ("Luca","Valentini"), + ("Cormac", "Muir")] \ No newline at end of file diff --git a/Unit 1/Lesson 4/customSorting.hs b/Unit 1/Lesson 4/customSorting.hs new file mode 100644 index 0000000..206a6b8 --- /dev/null +++ b/Unit 1/Lesson 4/customSorting.hs @@ -0,0 +1,22 @@ +import Data.List (sort, sortBy) +import AllNames (names) + +compareLastNames :: Ord a1 => (a2, a1) -> (a3, a1) -> Ordering +compareLastNames name1 name2 = if surname1 > surname2 + then GT + else if surname1 < surname2 + then LT + else EQ + where surname1 = snd name1 + surname2 = snd name2 + +-- Using Guards for boolean expressions + +-- compareLastNames :: Ord a1 => (a2, a1) -> (a3, a1) -> Ordering +-- compareLastNames name1 name2 +-- | surname1 > surname2 = GT +-- | surname1 < surname2 = LT +-- | otherwise = EQ +-- where +-- surname1 = snd name1 +-- surname2 = snd name2 \ No newline at end of file