Ho due domande strettamente correlati:di Haskell Arrow-Class in Agda e -> in Agda
In primo luogo, come può il Haskell classe Freccia essere modellato/rappresentato in 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')
(il seguente Blog Post afferma che dovrebbe essere possibile ...)
In secondo luogo, in Haskell, il (->)
è un cittadino di prima classe e solo un altro tipo di ordine superiore e la sua semplice da definire (->)
come un'istanza della classe Arrow
. Ma come è fatto ad Agda? Potrei sbagliarmi, ma ritengo che Agdas ->
sia una parte più integrante di Agda, rispetto a quella di Haskell ->
. Quindi, Agdas ->
può essere visto come un tipo di ordine superiore, vale a dire una funzione di tipo che produce Set
che può essere resa un'istanza di Arrow
?
Interessante domanda. (In Haskell, le frecce hanno uno zucchero sintattico che le rende ancora più utili.) – AndrewC
@AndrewC: intendi la notazione proc di Patterson? Sarebbe davvero interessante sapere, se anche in Agda fosse possibile esprimerlo ... – phynfo
Questo è esattamente ciò che intendo, sì. – AndrewC