J'ai deux questions étroitement liées:Arrow-classe de Haskell en Agda et -> dans Agda
Tout d'abord, comment la classe Arrow Haskell être modélisé/représenté dans Agda?
class Arrow a where
arr :: (b -> c) -> a b c
(>>>) :: a b c -> a c d -> a b d
first :: a b c -> a (b,d) (c,d)
second :: a b c -> a (d,b) (d,c)
(***) :: a b c -> a b' c' -> a (b,b') (c,c')
(&&&) :: a b c -> a b c' -> a b (c,c')
(le Blog Post suivant indique qu'il devrait être possible ...)
En second lieu, en Haskell, le (->)
est un citoyen de première classe et juste un autre type d'ordre supérieur et son simple à définir (->)
comme une instance de la classe Arrow
. Mais comment ça se passe à Agda? Je peux me tromper, mais je pense, que Agdas ->
est une partie plus intégrante d'Agda, que ->
est de Haskell. Ainsi, Agdas ->
peut-il être vu comme un type d'ordre supérieur, c'est-à-dire une fonction de type produisant Set
qui peut être une instance de Arrow
?
Question intéressante. (Dans Haskell, les flèches sont livrées avec du sucre syntaxique qui les rend encore plus utiles.) – AndrewC
@AndrewC: vous voulez dire la proc-notation de Patterson? Il serait en effet intéressant de savoir si cela serait aussi exprimable chez Agda ... – phynfo
C'est exactement ce que je veux dire, oui. – AndrewC