2011-07-27 16 views
5

Aby ponownie powiązać zapisy procesu Haskella, paragraf 7.3.11 "Rebindable syntax and the implicit Prelude import" w Podręczniku użytkownika GHC stwierdza, że ​​notacja Arrow używa funkcji znajdujących się w zakresie. Stwierdza również, że typy "muszą bardzo ściśle pasować do typów Prelude".Jak ponownie powiązać procekację Haskella ze zdefiniowanymi przez użytkownika Strzała?

Każdy, kto chce tego użyć, jest proszony o to. Jak blisko tego typu typy muszą pasować do typów Prelude?

Odpowiedz

2

Nie jestem świadomy żadnej pełnej dokumentacji dotyczącej ponownego zapisywania notacji proc - Myślę, że jest to w kategorii rzeczy, które tam wrzucono, ponieważ miało to sens, ale nie ma żadnych wyraźnych przykładów motywujących. za używanie go jeszcze.

Zrobiłem szybki test empiryczny, umożliwiając odpowiednie rozszerzenia, dając rebound funkcje fałszywych typów, a następnie patrząc na błędy typu. To, co widziałem, było mniej więcej takie:

arr :: (a -> b) -> t a b 
(>>>) :: t a b -> t b c -> t a c 
first :: t a b -> t (a, c) (b, c) 

Zakładam, że pozostałe funkcje są podobne. Z grubsza są to dokładnie te same typy, co standardowe funkcje, pomijając tylko ograniczenie Arrow w kontekście.

Powiązane problemy