Perché non può abbinare $ bool equiv bool $ con $ riflesso $ mentre $ 1 equiv 1 $ can?
-
05-11-2019 - |
Domanda
Questo codice dipende da AGDA-STDLIB:
{-# OPTIONS --without-K #-}
open import Data.Nat
open import Data.Bool
open import Relation.Binary.PropositionalEquality
-- this code doesn't check, cannot match e with refl
why : (e : Bool ≡ Bool) -> ℕ
why refl = zero
but-why : (e : 1 ≡ 1) -> ℕ
but-why refl = zero
So k-role significa che non posso abbinare $ forall aa equiv a $ insieme a $ Reflit $, ma se $ a $ è un valore concreto, può (cioè $ 1 equiv 1 $ può essere abbinato a $ Reflit $). Ma perché non posso abbinare $ Bool equiv bool $ insieme a $ Reflit $? Perché il tipo e il valore sono trattati in modo diverso in un linguaggio di programmazione a livello dipendente?
(Forse correlato: Cosa significa se disabilitiamo K-Rule in AGDA?)
Nessuna soluzione corretta
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a cs.stackexchange