我在HXT库上看到在我的终端提示符上有两个用于发短信的功能:
withTraceLevel
和
traceMsg
第一个功能" withTraceLevel"就像一个魅力,但第二个功能对我的代码不起作用,我错过了什么?
我的代码示例:
procIntersection = proc it -> do
set1 <- (getChildren >>> withTraceLevel 5 traceTree >>> traceMsg 1 "*********************************") -< it
returnA -< Intersection { setI1 = OWLNothing, setI2 = OWLNothing{--set2--} }
输出:
content of:
============
---XTag "rdf:Description"
| "rdf:about"="http://www.xfront.com/owl/ontologies/camera/#Body"
content of:
============
---XTag "owl:Restriction"
|
+---XTag "owl:onProperty"
| | "rdf:resource"="http://www.xfront.com/owl/ontologies/camera/#shutter-speed"
|
+---XTag "owl:cardinality"
| "rdf:datatype"="http://www.w3.org/2001/XMLSchema#nonNegativeInteger"
|
+---XText "0"
content of:
============
---XTag "rdf:Description"
| "rdf:about"="http://www.xfront.com/owl/ontologies/camera/#Camera"
content of:
============
---XTag "owl:Restriction"
|
+---XTag "owl:onProperty"
| | "rdf:resource"="http://www.xfront.com/owl/ontologies/camera/#viewFinder"
|
+---XTag "owl:hasValue"
| "rdf:resource"="http://www.xfront.com/owl/ontologies/camera/#ThroughTheLens"
通常,在&#34;的第二个&#34;内容之后它应该是一行: *********** 但那条线并没有出现在那里!
答案 0 :(得分:2)
withTraceLevel仅设置您提供的箭头的跟踪级别作为其第二个参数。
在下面的代码中, withTraceLevel 启用跟踪并仅在 traceTree 执行期间设置级别,而不是其余
withTraceLevel 5 traceTree >>> traceMsg 1 "bla bla"
试试这个
withTraceLevel 5 (traceTree >>> traceMsg 1 "bla bla")
看看口译员会发生什么:
$ ghci
Prelude> :m +Text.XML.HXT.Core Text.XML.HXT.Arrow.XmlState.TraceHandling
Prelude ...> runX $ withTraceLevel 2 $ traceMsg 1 "hi!"
Loading package array-0.4.0.1 ... linking ... done.
Loading ...
-- (1) hi!
[NTree (XTag "/" []) []]