在haskell中使用cheapskate无法识别类型别名

时间:2014-08-07 00:54:29

标签: haskell types pandoc

要点:

我正在使用Cheapskate由Pandoc的作者John MacFarlane创建的库来进行降价解析。我遇到了一个我无法解决的类型问题。基本上我正在尝试为代码块生成html。我最终希望renderBlocks def blocks键入check。我不能让块为Blocks

类型

在源代码中,Blocks类型别名为Seq Block,但我的错误消息显示它们不同。我试过在没有运气的情况下放置过多的类型注释。如果我指定类型为Blocks而不是Seq Block,则会出现错误,指出BlocksSeq a0

以下是我的project供参考。

错误消息:

Couldn't match expected type `Blocks' with actual type `Seq Block'
In the second argument of `renderBlocks', namely `blocks'
In the expression: renderBlocks Cheapskate.def blocks
In the expression:
  let
    t = T.concat $ map partToText parts
    attr
      = CodeAttr {codeLang = (T.pack "haskell"), codeInfo = T.empty} ::
          CodeAttr
    block = CodeBlock attr t
    ....
  in renderBlocks Cheapskate.def blocks

代码:

chunkToHtml :: Chunk -> Markup
chunkToHtml chunk =
    case chunk of
    Prose str -> toMarkup $ markdown Cheapskate.def (T.pack str)
    Def _ _ parts -> 
        let 
            t = T.concat $ map partToText parts
            attr = CodeAttr { codeLang=(T.pack "haskell"), codeInfo=T.empty} :: CodeAttr
            block = CodeBlock attr t
            blocks = (singleton block) :: Seq Block
        in 
            renderBlocks Cheapskate.def blocks

1 个答案:

答案 0 :(得分:1)

解决方案是恢复到从(0.5.5.1)到(0.4.2.1)的旧容器包。