
On Thu, 23 Oct 2008 15:07:09 +0900, Benjamin L.Russell
module Wine where
data Wine = Red | White data Red = "Merlot" data White = "Sauvignon Blanc" data Entree = "pork" | "chicken" | "tuna" data SideDish = "garlic bread" | "mozzarella sticks" | "caviar"
wine :: [Entree] -> [SideDish] -> [(Entree, SideDish, Wine)] wine entree sidedish | entree == "pork" = | sidedish == "garlic bread" = ("pork", "garlic bread", "Merlot") | sidedish == "mozzarella sticks" = ("pork", "mozzarella sticks", "Merlot") | sidedish == "caviar" = ("pork", "caviar", "Sauvignon Blanc") | entree == "chicken" = | sidedish == "garlic bread" = ("chicken", "garlic bread", "Merlot") | sidedish == "mozzarella sticks" = ("chicken", "mozzarella sticks", "Sauvignon Blanc") | sidedish == "caviar"= ("chicken", "caviar", "Merlot") | entree == "tuna" = | sidedish == "garlic bread" = ("tuna", "garlic bread", "Sauvignon Blanc") | sidedish == "mozzarella sticks" = ("tuna", "mozzarella sticks", "Merlot") | sidedish == "caviar"= ("tuna", "caviar", "Merlot")
Sorry, I forgot to take care of list comprehension. I'm not quite sure how to extract elements of both lists at the same time in a nested guard. Here's a slight revision; would this work? module Wine where data Wine = Red | White data Red = "Merlot" data White = "Sauvignon Blanc" data Entree = "pork" | "chicken" | "tuna" data SideDish = "garlic bread" | "mozzarella sticks" | "caviar" wine :: [Entree] -> [SideDish] -> [(Entree, SideDish, Wine)] wine entrees sidedishes | entree <- entrees == "pork" = | sidedish <- sidedieshes == "garlic bread" = ("pork", "garlic bread", "Merlot") | sidedish <- sidedishes == "mozzarella sticks" = ("pork", "mozzarella sticks", "Merlot") | sidedish <- sidedishes == "caviar" = ("pork", "caviar", "Sauvignon Blanc") | entree <- entrees == "chicken" = | sidedish <- sidedieshes == "garlic bread" = ("chicken", "garlic bread", "Merlot") | sidedish <- sidedieshes == "mozzarella sticks" = ("chicken", "mozzarella sticks", "Sauvignon Blanc") | sidedish <- sidedieshes == "caviar"= ("chicken", "caviar", "Merlot") | entree <- entrees == "tuna" = | sidedish <- sidedieshes == "garlic bread" = ("tuna", "garlic bread", "Sauvignon Blanc") | sidedish <- sidedieshes == "mozzarella sticks" = ("tuna", "mozzarella sticks", "Merlot") | sidedish <- sidedieshes == "caviar"= ("tuna", "caviar", "Merlot") -- Benjamin L. Russell