当要求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
。为什么?
答案 0 :(得分:2)
它是primitive
而不是postulate
。我们还必须在原语之前声明BUILTIN STRING
。
postulate String : Set
{-# BUILTIN STRING String #-}
primitive primStringEquality : String → String → Bool