Haskell 中的打印机用于 Data.Comp.Variables 中的 Subst

Printer in Haskell for Subst in Data.Comp.Variables

我有一个 return 是此库中定义的 Subst 的函数: http://hackage.haskell.org/package/compdata-0.1/docs/Data-Comp-Variables.html#t:Subst

我正在尝试打印 return 值。打印机应该显示从变量到术语的映射。

当我尝试打印结果时,我得到:

  • No instance for (Show (Cxt NoHole CTypeF ()))
        arising from a use of ‘print’
  • In the expression: (print subst)

我想这意味着我必须实现一个打印机。我知道当它是用户定义的 class 时,我可以做到 'deriving show'。有人可以指出我应该如何打印这个吗?

此外,这是我的 CTypeF 结构。

data CTypeF a 
    = CVarF Int 
    | CArrF a a
    | CIntF
    | CBoolF
    deriving (Eq, Data, Functor, Foldable, Traversable, Show)

是导出show,所以我觉得问题不在这里

Cxt has a Show instance, but it requires its f parameter to have an instance of ShowF.

(Functor f, ShowF f, Show a) => Show (Cxt h f a)

所以你需要让 CTypeF 有一个 ShowF 的实例。为此,您可以将 makeShowF 与模板 Haskell.

一起使用
$(makeShowF ''CTypeF)