Potrzebuję pomocy w zrozumieniu podpisu tego typu, który pochodzi z pakietu Thrist.Zrozumienie skomplikowanego typu Podpis
import Prelude hiding ((.), id)
import Control.Category
import Data.Monoid
import Control.Arrow
import Control.Monad
foldlThirst :: (forall j k . (a +> j) -> (j ~> k) -> (a +> k))
-> (a +> b)
-> Thrist (~>) b c
-> (a +> c)
Jestem zdezorientowany z kilku rzeczy.
Po pierwsze jakie są symbole +> i ~>? Gdzie są udokumentowane i jak się nazywają?
Ale moje zamieszanie się tam kończy. Zdaję sobie sprawę, że kwantyfikacja opisuje gwintowanie typów Thristla, ale nie jestem pewien, czy opisuje relację, która zachodzi dla pierwszego argumentu, czy całej funkcji, czy kto wie ...
W innych przypadkach, w których Widziałem egzystencjalną kwantyfikację, fraza kończy się okresem, ale tu kończy się ->, czy to jest znaczące?
Myślę, że mam. Reszta podpisu typu, który zacząłeś, byłaby następująca: (f a b) -> Thrist g b c -> (f a c). Jeśli tak, wyobrażam sobie, że równie dobrze mogliby być $>, itp. –
@ Jonathan Fischoff: Tak. Użyte symbole są jedynie sugestywne, podobnie jak tradycyjne użycie 'm' dla zmiennej typu, która ma być instancją' Monad'. –