저는 하스켈 초보자입니다. 미리 사과드립니다.하스켈에서 어떻게 목록을 필터링 할 수 있습니까?
나는 HXT 및 haskell을 사용하여 일부 HTML 값 (<a name="value-to-extract">
)을 구문 분석합니다. 나는이 할 경우
anames <- runX $ parseHtml contents >>> css "a" >>> getAttrValue "name"
:
["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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"]
지금 내가 원하는 :
print anames
를 그 다음이 목록을 인쇄 나는 이것을 사용 a name=""
name
값의 목록을 얻을 수 있습니다 ""
인 항목을 모두 제거하십시오.
그래서 나는
nonEmptyANames <- filter (\s -> s /= "") anames
을 시도하지만이 오류를 얻을 :
• 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
을 나는이 타이핑 문제라고 생각합니다, 그래서 시도 :
putStrLn ("type of aname is: " ++ (show (typeOf anames)))
을 그리고 그것은 나에게 말한다 aname
의 유형은 [Char]
입니다. ghci에서 filter 명령을 실행하면 예상대로 작동합니다. 내가 여기서 무엇을 놓치고 있니?
filter :: (a -> Bool) -> [a] -> [a]
은 그래서 모나드되지 않습니다 :
을 ... –
쓰기'nonEmptyANames = 필터 (> S/= ""\들)을하자 –