Стрелки / HXT и подписи типов

Я пытаюсь изучить стрелки в Haskell, поэтому я пишу простое приложение с библиотекой HXT на основе стрелок для XML. Примеры в вики-сайтах и ​​учебных пособиях 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 hasn ' t жаловался), мне понадобится способ объединения синтаксиса монады и синтаксиса стрелок, чтобы получить XmlTree из и вернуть в IO .

Я не знаю, что делать дальше. У кого-нибудь есть идеи?

5
задан providence 11 December 2011 в 22:18
поделиться