5
我想學習Haskell中的箭頭,所以我正在用基於箭頭的HXT庫XML編寫一個簡單的應用程序。 HXT wiki和教程中的示例放棄了函數類型簽名。但是,我非常喜歡類型,並試圖解決如何使用它們。這是我遇到了絆腳石的地方。鑑於這些功能:箭頭/ HXT和類型簽名
readXml str = runX (readString [withValidate no] str)
atTag tag = deep (isElem >>> hasName tag)
我的身影,他們應該被分配如下特徵:
readXml ∷ String → IO [XmlTree]
atTag ∷ ArrowXml a ⇒ String → a XmlTree XmlTree
我試圖鉤住這些在一起使用箭頭語法例如:
parseItem = proc str -> do
desc <- text <<< atTag "description" <<< arr readXml -< str
...
然而,如果我的類型簽名是正確的(GHC沒有投訴),我需要一種方法來將monad語法和箭頭語法結合起來,使XmlTree
退出並返回到IO
。
我不確定如何繼續。任何人有任何見解?
我很困惑。在場景1中,readXml實際上不是一個箭頭,而是一個返回箭頭的函數。如何將它與箭頭語法一起使用,就好像它是一個一樣? – providence
當我複製代碼時,我忘了刪除' - <';現在應該更清楚了。 – dflemstr