代码之家  ›  专栏  ›  技术社区  ›  Roasted Yam

查找归纳定义类型的实现(show)

  •  2
  • Roasted Yam  · 技术社区  · 7 年前

    以下代码段来自( https://stackoverflow.com/a/37461290/2129302 ):

    tensor : Vect n Nat -> Type -> Type
    tensor []        a = a
    tensor (m :: ms) a = Vect m (tensor ms a)
    

    我想定义以下内容:

    mkStr : (Show a) => tensor shape a -> String
    mkStr x = show x
    

    但这会产生以下错误:

    Can't find implementation for Show (tensor shape a)
    

    然而,在REPL上,我可以运行“show[some tensor value…]”。为什么会这样?我可以做些什么来修复它?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Shersh    7 年前

    你没有出现 a ,你正在展示 tensor shape a . 因此,以下内容应该可以工作,您需要用下一种方式写入类型:

    mkStr : (Show (tensor shape a)) => tensor shape a -> String
    mkStr x = show x