Created
March 23, 2011 23:04
-
-
Save nbogie/884223 to your computer and use it in GitHub Desktop.
A demonstration of a problem calling showattr in HaXml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module Main where | |
import Text.XML.HaXml | |
import Text.XML.HaXml.Posn | |
main :: IO () | |
main = processXmlWith (hexagrams `o` tag "IChing") | |
hexagrams :: Content Posn -> [Content Posn] | |
hexagrams = html [ hbody [htable [rows `o` children `with` ( tag "hexagram")] ] ] | |
rows :: Content Posn -> [Content Posn] | |
rows f = | |
let | |
nodes = keep /> attr "ver" /> txt | |
versions = keep /> attr "ver" /> showattr "ver" -- bails | |
in hrow [hcol [versions]] f | |
-- Runtime error: | |
-- bugdemo.hs: src/Text/XML/HaXml/Combinators.hs:(136,0)-(137,79): | |
-- Non-exhaustive patterns in function find | |
-- | |
-- code in question (I think) | |
-- http://hackage.haskell.org/packages/archive/HaXml/1.20.2/doc/html/src/Text-XML-HaXml-Combinators.html#find | |
-- | |
-- find :: String -> (String->CFilter i) -> CFilter i | |
-- find key cont c@(CElem (Elem _ as _) _) = cont (show (lookfor key as)) c | |
-- where lookfor x = fromMaybe (error ("missing attribute: "++show x)) . lookup x | |
-- -- 'lookfor' has the more general type :: (Eq a,Show a) => a -> [(a,b)] -> b | |
-- | |
-- HaXml: Latest version installed: 1.20.2 | |
-- input document | |
{- | |
<?xml version="1.0"?> | |
<IChing> | |
<hexagram> | |
<number>1</number> | |
<name ver="1.1">Ch'ien</name> | |
</hexagram> | |
<hexagram> | |
<number>2</number> | |
<name ver="2.2">K'un</name> | |
</hexagram> | |
</IChing> | |
-} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment