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 synonim

Teraz 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!

questionAnswers(4)

yourAnswerToTheQuestion