;; uniquewords.hs — count unique words using Data.Set. ;; ;; Exercises Phase 12: `import qualified Data.Set as Set`, `Set.empty`, ;; `Set.insert`, `Set.size`, `foldl`. (define hk-uniquewords-source "import qualified Data.Set as Set\n\naddWord s w = Set.insert w s\n\nuniqueWords ws = foldl addWord Set.empty ws\n\nresult = uniqueWords [\"the\", \"cat\", \"the\", \"dog\", \"the\", \"cat\"]\n") (hk-test "uniquewords.hs — unique count = 3" (hk-deep-force (hk-run (str hk-uniquewords-source "main = Set.size result\n"))) 3) (hk-test "uniquewords.hs — \"the\" present" (hk-deep-force (hk-run (str hk-uniquewords-source "main = Set.member \"the\" result\n"))) (list "True")) (hk-test "uniquewords.hs — \"missing\" absent" (hk-deep-force (hk-run (str hk-uniquewords-source "main = Set.member \"missing\" result\n"))) (list "False")) (hk-test "uniquewords.hs — empty list yields empty set" (hk-deep-force (hk-run "import qualified Data.Set as Set\nmain = Set.size (foldl (\\s w -> Set.insert w s) Set.empty [])")) 0) {:fails hk-test-fails :pass hk-test-pass :fail hk-test-fail}