Ich bin ein Haskell Anfänger, also Entschuldigung im Voraus.Wie kann ich eine Liste in Haskell filtern?
Ich analysiere einige HTML-Werte (<a name="value-to-extract">
) mit HXT und Haskell. Ich kann eine Liste von a name=""
name
Werte erhalten diese mit:
anames <- runX $ parseHtml contents >>> css "a" >>> getAttrValue "name"
Wenn ich dies tun:
print anames
Dann druckt er diese Liste:
["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","2H_4_0001","2HCH0001","2HCH0002","2HCH0003","2HCH0004","2HCH0005","2HCH0006","2HCH0007","2HCH0008","2HCH0009","2HCH0010","2HCH0011","2HCH0012","2HCH0013","2HCH0014","2HCH0015","2HCH0016","2HCH0017","2HCH0018","2HCH0019","2HCH0020","2HCH0021","2HCH0022","2HCH0023","2HCH0024","2HCH0025","2HCH0026","2HCH0027","2HCH0028","2HCH0029","2HCH0030","2HCH0031","2H_4_0033"]
Jetzt möchte ich Entfernen Sie alle Einträge, die ""
sind.
Also versuche ich
nonEmptyANames <- filter (\s -> s /= "") anames
Aber ich bekomme diese Fehlermeldung:
• Couldn't match type ‘[]’ with ‘IO’
Expected type: IO String
Actual type: [String]
• In a stmt of a 'do' block:
nonEmptyANames <- filter (\ s -> s /= "") anames
Ich denke, das ein Tipp Problem ist, so dass ich versuchen:
putStrLn ("type of aname is: " ++ (show (typeOf anames)))
Und es sagt mir, dass der Typ aname
[Char]
ist. Wenn ich den Filterbefehl in Ghci versuche, funktioniert es wie erwartet. Was fehlt mir hier?
Das Problem ist mehr, dass 'filter' nicht monadischen ist ... –
schreiben' lassen nonEmptyANames = Filter (\ s -> s/= "") anames' –