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
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
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden