orders [] budget = if budget == 0 then [[]] else [] orders _ budget | budget < 0 = [] orders itemss@((name,price):items) budget = (++ (orders items budget)) $ map (name:) $ orders itemss $ budget - price main = putStrLn $ show $ orders [("mixed fruit", 215), ("French fries", 275), ("side salad", 335), ("hot wings", 355), ("mozzarella sticks", 420), ("sampler plate", 580)] 1505