0

HXT ライブラリで、端末のプロンプトにメッセージをテキスト送信するための 2 つの関数があることを確認しました。

withTraceLevel

traceMsg

最初の関数「withTraceLevel」は魅力的に機能しますが、2 番目の関数は私のコードでは機能しません。

私のコードの例:

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"

通常、2 番目の「内容」の後に次のような行があるはずです: ************ しかし、その行はそこに表示されません。

4

1 に答える 1

2

withTraceLevelは、2 番目のパラメーターとして指定した矢印のトレース レベルのみを設定します。

以下のコードでは、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 "/" []) []]
于 2014-05-09T17:48:34.940 に答える