ОК, поэтому я провел весь день с докладом о языке Haskell (2010) и обнаружил всевозможные «интересные» кромки. Вещь, которая была бы у вас думаю должна быть ошибка, но которая фактически разрешена.Haskell Language Report: определение reservedid
В частности, рассмотрим следующий отрывок из лексической ссылки синтаксиса (раздел 10.2):
reservedid → case | class | data | default | deriving | do | else
| foreign | if | import | in | infix | infixl |
| infixr | instance | let | module | newtype | of
| then | type | where | _
Вы мощь ожидают увидеть qualified
в этом списке & hellip; Но его нет. (Не является as
или hiding
, если на то пошло.)
Теперь мне интересно и hellip; Является ли это случайным наблюдением в Отчете? Или это преднамеренное дизайнерское решение?
Похоже, что GHC, по крайней мере, следует за буквой спецификации, поскольку она с радостью позволит вам определить переменную, имя которой, по сути, qualified
. Странно, но верно. Таким образом, кажется, что это имя является только «особенным» в одном контексте. В отличие от этого, вы можете никогда имя переменная module
. Мы могли бы сделать это слово особенным только в начале файла & hellip; но мы этого не сделали.
Интересно, что StackOverflow не считает, что 'foreign' является ключевым словом ... (Обратите внимание, я не знаю, на каком языке он автоматически обнаруживается, поэтому ...) – MathematicalOrchid