Я читаю Real World Haskell Pg 151, и я смотрел на следующий отрывок более часа:
Напомним, что String является синонимом [ Char], который, в свою очередь, является типом [a] где Char заменяется типом параметр a. Согласно Haskell 98's правил, нам не разрешено предоставлять введите вместо параметра типа, когда мы пишем экземпляр. Другими словами, нам было бы законно писать экземпляр для [a], но не для [Char]. 16 комментариев 5335
Он просто не погружается. Посмотрите на (свободная не пиратская) копия главы 6 RWH Я вижу много других люди действительно страдают от этого. Я все еще не понимаю этого из комментариев...
Во-первых, все об этом меня смущает, поэтому, пожалуйста, если вы чувствуете, что можете объяснить что-нибудь об этом отрывке, или TypeSynonymInstances
сделайте.
Вот моя проблема:
-
Int
- конструктор данных -
String
- это конструктор данных И синоним типа
Теперь я не могу ответить на эти вопросы:
- Почему синоним типа исключает возможность создания типа члена класса типа (я ищу какую-то причину, которая, вероятно, связана с компиляцией или импликацией синонима типа)?
- Почему разработчики языка не хотят этого синтаксиса (я прошу рассуждать о небрежной математике или математике или юникоде).
- Я вижу эту строку "тип [a], где Char заменяется параметром типа a", и я хочу знать, почему я не могу его заменить "для типа a, где Int заменяется на type a".
Спасибо!