So hlint suggests that I convert the line checked = if ival==input then [("checked","checked")] else [] to checked = [("checked","checked") | ival==input] I'm not really sure why this works. Is there some implicit list being filtered by ival==input? What's going on? thanks Lee