xmlgenライブラリの使用方法を学習しようとしていますが、 http: //factisresearch.blogspot.in/2011/05/xmlgen-feature-rich-and-high.htmlの例を試してみると、コンパイルエラーが発生します。
コードは次のとおりです。
import Text.XML.Generator
import Data.ByteString.Lazy as BSL
import Prelude as P
genXml' :: Xml Doc
genXml' =
let people = [("Stefan", "32"), ("Judith", "4")]
in doc defaultDocInfo $
xelem "people" $
xelems $ P.map (\(name, age) -> xelem "person" (xattr "age" age <#> xtext name)) people
outputXml :: IO ()
outputXml = BSL.putStr (xrender genXml')
コンパイラエラー:
$ ghc --make prog.hs
[1 of 1] Compiling Main ( prog.hs, prog.o )
prog.hs:13:25:
No instance for (XmlOutput ByteString)
arising from a use of `xrender'
Possible fix:
add an instance declaration for (XmlOutput ByteString)
In the first argument of `BSL.putStr', namely `(xrender genXml')'
In the expression: BSL.putStr (xrender genXml')
In an equation for `outputXml':
outputXml = BSL.putStr (xrender genXml')
コンパイラは、「xrendergenXML」は「XmlOutputByteString」タイプである必要があると推測しているようで、xmlgenライブラリにこのインスタンスがあります。したがって、このエラーの意味と修正方法を理解するのを手伝ってください。
それが役立つ場合は、Ubuntu 12.10、ghc 7.4.2、およびxmlgen0.4.0.3のHaskellプラットフォームを使用しています