mam dwa ściśle powiązane pytania:Haskell'a Arrow-Class w Agda oraz -> w Agda
Po pierwsze, jak może Haskell'a Strzałka Klasa być modelowane/reprezentowane w 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')
(następujące Blog Post stwierdza, że powinno być możliwe ...)
Po drugie, w Haskell The (->)
jest typ pierwszoklasowy i po prostu inny rodzaj wyższego rzędu, a jego proste do zdefiniowania (->)
jako jedna instancja klasy Arrow
. Ale jak to jest w Agdzie? Mogę się mylić, ale czuję, że Agdas ->
jest bardziej integralną częścią Agdy, niż Haskella ->
. Czy zatem Agdas ->
może być postrzegany jako typ wyższego rzędu, tj. Funkcja typu, która daje Set
, która może być wykonana jako instancja Arrow
?
Interesujące pytanie. (W Haskell, Arrows mają trochę cukru syntaktycznego, dzięki czemu są jeszcze bardziej pomocni.) – AndrewC
@ Andrew: chodzi ci o Proc-Notation Pattersona? Byłoby naprawdę interesujące wiedzieć, czy to też można wyrazić w Agdzie ... – phynfo
To właśnie mam na myśli, tak. – AndrewC