htmlのパースで苦戦中
HXT - HaskellWikiを読みつつ、htmlをパースしたいなぁといろいろいじっていた今日。
まぁ、まじめに読むのはあれなので、コード片やタイトルで6.1 Selecting text from an HTML documentが、僕のやりたいことに近いかと思って、
selectAllText :: ArrowXml a => a XmlTree XmlTree selectAllText = deep isXText
というのを、試そうと思ってghciでやったんだけど、以下みたいにエラーがでた。
Prelude Data.Tree.NTree.TypeDefs Data.Maybe Control.Arrow.ArrowTree Control.Arrow Text.XML.HXT.DOM.XmlTreeFilter Text.XML.HXT.DOM.XmlKeywords Text.XML.HXT.Arrow.XmlIOStateArr ow Text.XML.HXT.Arrow.XmlArrow Text.XML.HXT.Arrow.ReadDocument> :t deep deep :: (ArrowTree a, Tree t) => a (t b) (t b) -> a (t b) (t b) Prelude Data.Tree.NTree.TypeDefs Data.Maybe Control.Arrow.ArrowTree Control.Arrow Text.XML.HXT.DOM.XmlTreeFilter Text.XML.HXT.DOM.XmlKeywords Text.XML.HXT.Arrow.XmlIOStateArrow Text.XML.HXT.Arrow.XmlArrow Text.XML.HXT.Arrow.ReadDocument> :t isXText isXText :: NTree Text.XML.HXT.DOM.TypeDefs.XNode -> NTrees Text.XML.HXT.DOM.TypeDefs.XNode Prelude Data.Tree.NTree.TypeDefs Data.Maybe Control.Arrow.ArrowTree Control.Arrow Text.XML.HXT.DOM.XmlTreeFilter Text.XML.HXT.DOM.XmlKeywords Text.XML.HXT.Arrow.XmlIOStateArrow Text.XML.HXT.Arrow.XmlArrow Text.XML.HXT.Arrow.ReadDocument> let hoge = deep isXText <interactive>:1:16: Couldn't match expected type `NTree' against inferred type `[]' Expected type: NTree Text.XML.HXT.DOM.TypeDefs.XNode -> NTree Text.XML.HXT.DOM.TypeDefs.XNode Inferred type: Text.XML.HXT.DOM.XmlTreeTypes.XmlFilter In the first argument of `deep', namely `isXText' In the expression: deep isXText
なんなんだ、もう。isXTextの型みるかぎり、deep isXTextがアウトになる意味がわからない。
途中をすっとばした俺が悪いのか。もーちょい、ちゃんと読んでみよう。