module Step_3_6 where
import Text.Html
page = thehtml <<
[ header << (thetitle << "Output")
, body <<
[ h1 << "A to do list:"
, thediv << toDoHtml
, h1 << "# people invited:"
, p << show (headcount invited)
]
]
-- We've written two lists.
data ToDo = ToDo String | Done String
toDoItems :: [ToDo]
toDoItems =
[ Done "Pick up avacados"
, Done "Make snacks"
, ToDo "Clean house"
, ToDo "Have party"
]
data Invite = Invite String Int
who :: Invite -> String
who (Invite name count) = name
invited :: [Invite]
invited =
[ Invite "Amy" 1
, Invite "Bob" 7 -- he's got lots of kids
, Invite "Cam" 2
, Invite "Doris" 3
, Invite "Edgar" 2
, Invite "Fran" 2
]
formatToDo :: ToDo -> Html
-- Try writing this
renderToDo :: [ToDo] -> [Html]
renderToDo ts = map formatToDo ts
toDoHtml :: Html
toDoHtml = ulist << renderToDo toDoItems
-- NEXT
-- Write this function
headcount :: [Invite] -> Int
headcount is = 0 -- this list was just a place holder, delete it