代码之家  ›  专栏  ›  技术社区  ›  Răzvan Flavius Panda

计算出所有函数参数模式匹配

  •  1
  • Răzvan Flavius Panda  · 技术社区  · 7 年前

    有:

    data Bin : Set where
      nil : Bin
      x0_ : Bin → Bin
      x1_ : Bin → Bin
    
    data One : Bin → Set where
      one : One (x1 nil)
      y0_ : ∀ {bin : Bin} → One bin → One (x0 bin)
      y1_ : ∀ {bin : Bin} → One bin → One (x1 bin)
    
    one-ident : ∀ {x : Bin} → One x → to (from x) ≡ x
    

    生成所有函数参数模式匹配的逻辑是什么?

    one-ident one = {!   !}
    one-ident {x0 x} (y0 o) = {!   !}
    one-ident {x1 x} (y1 o) = {!   !}
    

    例如,知道第一个参数是 {x0 x} 为什么第二个论点必须是 (y0 o) ?为什么第二个论点不能 (y1 o) ?

    代码示例取自 here .

    1 回复  |  直到 7 年前
        1
  •  2
  •   ase    7 年前
    one-ident : ∀ {x : Bin} → One x → to (from x) ≡ x
    one-ident one = {!   !}
    one-ident {x0 xx} (y0 o) = {!   !}
    one-ident {x1 xx} (y1 o) = {!   !}
    

    当你知道的时候 x x0 xx 在一个标识中,您知道第二个参数的类型是 One (x0 xx) . 中只有一个构造函数 One 可以有这种类型,即 y0_ .