[SOLVED] CS module Sentence where

$25

File Name: CS_module_Sentence_where.zip
File Size: 226.08 KB

5/5 - (1 vote)

module Sentence where

Grammar for the animal sentence language:

s::=n v n|s `and` s
n::=`cats` | `dogs` | `ducks`
v::=`chase` | `cuddle`

data Sentence
= NVN Noun Verb Noun
| And Sentence Sentence
deriving (Eq,Show)

data Noun = Cats | Dogs | Ducks
deriving (Eq,Show)

data Verb = Chase | Cuddle
deriving (Eq,Show)

| The sentence: cats cuddle ducks and dogs cuddle ducks
ex1 :: Sentence
ex1 = And (NVN Cats Cuddle Ducks) (NVN Dogs Cuddle Ducks)

| The sentence: dogs chase cats and cats chase ducks and ducks chase cats
ex2 :: Sentence
ex2 = And (NVN Dogs Chase Cats) (And (NVN Cats Chase Ducks) (NVN Ducks Chase Cats))
ex2 = And (And (NVN Dogs Chase Cats) (NVN Cats Chase Ducks)) (NVN Ducks Chase Cats)

| Build a sentence that is a conjunction of other sentences.
conjunction :: [Sentence] -> Maybe Sentence
conjunction []= Nothing
conjunction (h:t) = case conjunction t of
Nothing -> Just h
Just s-> Just (And h s)

| 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 print a noun.
prettyNoun :: Noun -> String
prettyNoun Cats= cats
prettyNoun Dogs= dogs
prettyNoun Ducks = ducks

| Pretty print a verb.
prettyVerb :: Verb -> String
prettyVerb Chase= chase
prettyVerb Cuddle = cuddle

| Does the sentence contain only cuddling?
isNice :: Sentence -> Bool
isNice (NVN _ Chase _)= False
isNice (NVN _ Cuddle _) = True
isNice (And l r)= isNice l && isNice r

Reviews

There are no reviews yet.

Only logged in customers who have purchased this product may leave a review.

Shopping Cart
[SOLVED] CS module Sentence where
$25