Есть несколько способов сделать это, вы сделали это путем понимания списка, другой способ - использовать карту:
listQuest :: [Question] -> [Int]
listQuest xs = map questNum xs
короче
listQuest :: [Question] -> [Int]
listQuest = map questNum
с использованием Foldr (это такжеспособ сказать карту, действительно, вы можете написать общую карту, используя foldr):
listQuest :: [Question] -> [Int]
listQuest = foldr (\x rs -> questNum x : rs) []
и старое хорошее сопоставление с образцом (это карта, но с сопоставлением с образцом):
listQuest :: [Question] -> [Int]
listQuest [] = []
listQuest (x:xs) = questNum x : listQuest xs
ваш путь и все это эквивалентны.
В приглашении:
Затем в приглашении вы вводите что-то вроде:
$> :l file_name.hs
$> listQuest [Yes, Yes, No]
$> [1,1,0]