guguli Geschrieben 30. Januar 2011 Geschrieben 30. Januar 2011 Hallo zusammen, Ich habe folgende Aufgabestellung: ich muss eine Funktion filterE :: (v -> l -> v -> Bool) -> [LabeledEdge v l] -> [LabeledEdge v l] schreiben, die aus einer Liste von beschrifteten Kanten diejenigen zurückgibt, für die die als erstes Argument übergebene Funktion True zurückgibt. Ich selbst habe so weit den Baum so dargestellt: data LabeledGraph v l = Graph [LabeledEdge v l] deriving Show data LabeledEdge v l = Edge v l v deriving Show data ContactType = Friend | Business | Lover deriving Show socialNetwork :: LabeledGraph String ContactType socialNetwork = Graph [Edge "Carol" Friend "Alice", Edge "Alice" Friend "Carol", Edge "Carol" Friend "Fran", Edge "Fran" Friend "Carol", Edge "Fran" Business "Alice", Edge "Alice" Business "Fran", Edge "Eve" Business "Fran", Edge "Fran" Business "Eve", Edge "Alice" Business "Dave", Edge "Dave" Business "Alice", Edge "Alice" Lover "Bob", Edge "Bob" Lover "Alice", Edge "Eve" Friend "Bob", Edge "Bob" Friend "Eve", Edge "Bob" Freind "Dave", Edge "Dave" Friend "Bob"] filterE :: (v -> l -> v -> Bool) -> [LabledEdge v l] -> [LabledEdge v l] filterE g (Graph x:xs) = Kann mir da eine nen Tipp geben wie ich da weiter kommen kann.?! Vielen Dank Zitieren
Ezra Geschrieben 1. Februar 2011 Geschrieben 1. Februar 2011 Mal ohne es ausprobiert zu haben, müsste das doch so ähnlich sein: filterE :: (v -> l -> v -> Bool) -> [LabledEdge v l] -> [LabledEdge v l] filterE g [] = [] filterE g (Graph x:xs) = if (g x == True) then [x] ++ (filterE g xs) else filterE g xs Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.