primStringEquality 不减少

primStringEquality not reducing

当要求 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"

它returns primStringEquality "bar" "foo" 而不是F。为什么?

平等的 primitive 而不是 postulate。我们还必须在基元之前声明 BUILTIN STRING

postulate String : Set
{-# BUILTIN STRING String #-}

primitive primStringEquality : String → String → Bool