summaryrefslogtreecommitdiff
path: root/lec07/Scrabble.hs
diff options
context:
space:
mode:
Diffstat (limited to 'lec07/Scrabble.hs')
-rw-r--r--lec07/Scrabble.hs22
1 files changed, 22 insertions, 0 deletions
diff --git a/lec07/Scrabble.hs b/lec07/Scrabble.hs
new file mode 100644
index 0000000..2c3b1f9
--- /dev/null
+++ b/lec07/Scrabble.hs
@@ -0,0 +1,22 @@
+module Scrabble where
+import Data.Char
+import Data.List ((!?))
+
+-- Exercise 3
+
+newtype Score = Score Int
+ deriving (Eq, Ord, Show, Num)
+
+-- Needed due to changes in the standard library, see Sized.
+instance Semigroup Score where
+ (<>) = (+)
+
+instance Monoid Score where
+ mempty = Score 0
+
+score :: Char -> Score
+score c = Score $ fromMaybe 0 $ scores !? (fromEnum (toUpper c) - fromEnum 'A')
+ where scores = [1,3,3,2,1,4,2,4,1,8,5,1,3,1,1,3,10,1,1,1,1,4,4,8,4,10] :: [Int]
+
+scoreString :: String -> Score
+scoreString = foldl' <> mempty