guguli Geschrieben 30. Januar 2011 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Ezra Geschrieben 1. Februar 2011 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
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.