J'essaye de coder une sémantique dénotationnelle dans Agda basée sur un programme que j'ai écrit dans Haskell."Strictement positif" dans Agda
data Value = FunVal (Value -> Value)
| PriVal Int
| ConVal Id [Value]
| Error String
Dans Agda, la traduction directe serait;
data Value : Set where
FunVal : (Value -> Value) -> Value
PriVal : ℕ -> Value
ConVal : String -> List Value -> Value
Error : String -> Value
mais j'obtiens une erreur relative au FunVal car;
valeur n'est pas strictement positif, car il se produit à la gauche d'une flèche dans le type du constructeur FunVal dans la définition de la valeur .
Qu'est-ce que cela signifie? Puis-je l'encoder dans Agda? Est-ce que je vais dans le mauvais sens?
Merci.
Vous pourriez être intéressé par PHOAS, expliqué par Chlipala [ici] (http://adam.chlipala.net/papers/PhoasICFP08/PhoasICFP08.ps). – danr
Merci. J'ai joué un peu avec ça depuis. –