代码之家  ›  专栏  ›  技术社区  ›  MaiaVictor

一元化不减量

  •  1
  • MaiaVictor  · 技术社区  · 7 年前

    当要求Agda正常化时 test 在以下程序中:

    data Bool : Set where
      T : Bool
      F : Bool
    {-# BUILTIN BOOL  Bool  #-}
    {-# BUILTIN TRUE  T #-}
    {-# BUILTIN FALSE F #-}
    
    postulate String : Set
    postulate primStringEquality : String → String → Bool
    {-# BUILTIN STRING String #-}
    
    test : Bool
    test = primStringEquality "bar" "foo"
    

    它回来了 primStringEquality "bar" "foo" 而不是 F . 为什么?

    1 回复  |  直到 7 年前
        1
  •  2
  •   András Kovács    7 年前

    它是 primitive 为了平等而不是 postulate . 我们还要申报 BUILTIN STRING

    postulate String : Set
    {-# BUILTIN STRING String #-}
    
    primitive primStringEquality : String → String → Bool