Question
Here is the template, so please provide the Haskell solutions for #5: -- Homework 3 template module Sentence where -- Grammar for the animal sentence
Here is the template, so please provide the Haskell solutions for #5:
-- Homework 3 template module Sentence where -- Grammar for the animal sentence language: -- -- -- data Sentence = NVN -- finish noun verb noun sentence | NV -- finish noun verb sentence | And -- finish sentence and sentence | End deriving (Eq,Show) data Adj = -- finish adjectives deriving (Eq,Show) data Noun = -- finish | NP Adj Noun -- Noun phrase | NAnd Noun Noun -- Finish noun and noun | Cats -- list of nouns deriving (Eq,Show) data Verb = Chase | -- finish deriving (Eq,Show) -- | The sentence: cats cuddle ducks and dogs cuddle ducks ex1 :: Sentence ex1 = NVN Cats Hug Dogs ex2 :: Sentence ex2 = NVN (NP Silly Cats) Hug Dogs ex3 :: Sentence ex3 = NVN (NAnd Dogs Cats) Chase Ducks ex4 :: Sentence ex4 = NVN (NAnd (NP Silly Dogs) Cats) Chase Ducks -- | Build a sentence from a noun verb noun. -- | buildS2 Cats Hug Cats -- | NVN Cats Hug Cats buildS2 :: Noun -> Verb ->Noun-> Sentence -- finish -- | Build a sentence from a noun verb -- | buildS1 Cats Hug -- | NV Cats Hug buildS1 :: Noun -> Verb ->Sentence -- finish -- | Build a noun phrase from an adjective and noun -- | buildNP Silly Dogs -- | NP Silly Dogs buildNP :: Adj -> Noun -> Noun -- finish -- | Build a noun conjunction from two nouns -- | buildNAnd Dogs Cats -- | NAnd Dogs Cats buildNAnd :: Noun -> Noun -> Noun -- finish -- | Build a sentence that is a conjunction of a list of other sentences. -- | conjunction [ex1, ex2] -- | And (NVN Cats Hug Dogs) (NVN (NP Silly Cats) Hug Dogs) -- conjunction :: [Sentence] -> Sentence conjunction [] = End -- finish -- | Pretty print a sentence. pretty :: Sentence -> String pretty (NVN s v o) = prettyNoun s ++ " " ++ prettyVerb v ++ " " ++ prettyNoun o pretty (And l r) = pretty l ++ " and " ++ pretty r pretty (NV s v) = prettyNoun s ++ " " ++ prettyVerb v pretty (End) = "." -- | Pretty print a noun. prettyNoun :: Noun -> String prettyNoun Cats = "cats" -- finish prettyNoun (NP a n) = prettyAdj a ++ " " ++ prettyNoun n prettyNoun (NAnd m n) = prettyNoun m ++ " and " ++prettyNoun n -- | Pretty print a verb. prettyVerb :: Verb -> String prettyVerb Chase = "chase" -- finish -- | Pretty print an adjective. prettyAdj :: Adj -> String prettyAdj Silly = "silly" -- finish -- | Does the sentence contain only cuddling and hugs? -- | isNice ex2 -- | True isNice :: Sentence -> Bool isNice (NVN _ Chase _) = False isNice (NVN _ Cuddle _) = True -- finish -- |Count the number of words in a sentence -- | wordCount ex4 -- 6 wordCount :: Sentence -> Int wordCount ( And l r ) = wordCount l + wordCount r -- finish |
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started