Jaki jest wpływ synonimów typu na instancje klas typów? Co robi pragma TypeSynonymInstances w GHC?
czytamPrawdziwy świat Haskell Str. 151, a ja patrzyłem na następujący fragment przez ponad godzinę:
Przypomnijmy, że String jest synonimem [Char], który z kolei jest typem [a], gdzie Char jest podstawiony dla parametru typu a. Zgodnie z regułami Haskell 98 nie wolno nam podawać typu zamiast parametru typu podczas pisania instancji. Innymi słowy, byłoby legalne, gdybyśmy napisali instancję dla [a], ale nie dla [Char]. 16 komentarzy 5335
Po prostu nie wpada. Wpatruje się w(bezpłatna nie piracka) kopia RWH rozdział 6 Widzędużo innych ludzi naprawdę cierpi z tego powodu. Nadal nie rozumiem tego z komentarzy ...
Po pierwsze, wszystko o tym myli mnie, więc proszę, jeśli uważasz, że możesz wyjaśnić cokolwiek na temat tego fragmentu, lubTypeSynonymInstances
proszę zrób.
Oto mój problem:
Int
jestkonstruktor danychString
jestkonstruktor danych I wpisz synonimTeraz nie mogę odpowiedzieć na te pytania:
Dlaczego synonim typu wykluczałby utworzenie typu członka klasy typu (szukam jakiegoś powodu, który prawdopodobnie odnosi się do kompilacji lub wszczepienia synonimu typu)?Dlaczego projektanci języka nie chcieli tej składni (proszę o rozumowanie, a nie obszerne symbole matematyczne lub teorie Unicode).Widzę tę linię„typ [a], gdzie Char jest zastąpiony parametrem typu a”i chcę wiedzieć, dlaczego nie mogę tego zastąpić„typ a, gdzie Int jest zastępowany parametrem typu a”.Dzięki!