module Step_3_2 where import Text.Html page = thehtml << [ header << (thetitle << "Output") , body << [ h1 << "A to do list:" , thediv << toDoHtml ] ] -- We've changed the type of toDoItems to include a Bool value to -- indicate if they've been done. toDoItems :: [(Bool, String)] -- a list of tuples: each a Bool and String toDoItems = [ (True, "Pick up avacados") , (True, "Make snacks") , (False, "Clean house") , (False, "Have party") ] -- Haskellers often format lists with long items in this funny way! renderToDo :: [String] -> [Html] renderToDo ts = map (li <<) ts toDoHtml :: Html toDoHtml = ulist << renderToDo toDoItems -- Try running this file. You'll find that the it doesn't compile, and gives -- an error on the line above. Just read the first two lines of the error and -- see if you can see what the compiler is trying to tell you about the problem -- with the types. -- Fix the renderToDo function to fix the problem. -- NEXT -- What did you end up doing with the Bool component of the tuple? Did you -- ignore it? Did you use it in the computation somehow? Did you notice that -- by having a clear type, you were forced to think about it? -- Change the renderToDo function to render the items that aren't done bold. -- NEXT -- For a challenge, change the renderToDo function to render only the first -- not done item bold. hint1 = map pred "Zpv!qspcbcmz!ibwf!up!hp!cbdl!up!opu!vtjoh!nbq/" hint2 = map pred "Zpv!qspcbcmz!xjmm!offe!bopuifs!ifmqfs!gvodujpo/"