Sto provando a codificare una semantica denotazionale in Agda basata su un programma che ho scritto in Haskell."Rigorosamente positivo" in Agda
data Value = FunVal (Value -> Value)
| PriVal Int
| ConVal Id [Value]
| Error String
In Agda, la traduzione diretta sarebbe;
data Value : Set where
FunVal : (Value -> Value) -> Value
PriVal : ℕ -> Value
ConVal : String -> List Value -> Value
Error : String -> Value
ma ottengo un errore relativo al FunVal perché;
Il valore non è strettamente positiva, perché si verifica a sinistra di una freccia nel tipo di FunVal costruttore nella definizione di Valore.
Cosa significa? Posso codificarlo in Agda? Sto andando nel modo sbagliato?
Grazie.
Potreste essere interessati al PHOAS, spiegato da Chlipala [qui] (http://adam.chlipala.net/papers/PhoasICFP08/PhoasICFP08.ps). – danr
Grazie. Da allora ho giocato un po 'con questo. –