为什么tracMsg不起作用?

时间:2014-05-06 14:18:49

标签: haskell hxt

我在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;内容之后它应该是一行: *********** 但那条线并没有出现在那里!

1 个答案:

答案 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 "/" []) []]
相关问题