В Learn You a Haskell есть тип образец Enum
:синтаксис диапазона списка Haskell
data Day = Monday | Tuesday | Wednesday | Thursday | Friday | Saturday | Sunday
deriving (Eq, Ord, Show, Read, Bounded, Enum)
, но когда я пытаюсь получить список Day
с использованием синтаксиса диапазона без пробелов граничащих Конструкторов значений я получаю следующее сообщение об ошибке:
ghci> [Thursday..Sunday]
<interactive>:30:2:
Failed to load interface for `Thursday'
Use -v to see a list of the files searched for.
<interactive>:30:2:
A section must be enclosed in parentheses thus: (Thursday.. Sunday)
Когда я использую пробельные все работает:
ghci> [Thursday .. Sunday]
[Thursday,Friday,Saturday,Sunday]
В чем причина такого поведения (например, диапазоны для Int
s не требуют пробелов)?
tl; dr: 'Thursday' интерпретируется как имя модуля при использовании' Thursday.' – soulcheck
Язык _enforcing_ хороший стиль, довольно редкое явление. Не помещать пробелы вокруг '..' ** уродливо **. Я сжимаю каждый раз, когда вижу это. –