Двумя языками, на которых я использовал символы, являются Ruby и Erlang, и я всегда считал их чрезвычайно полезными.
Haskell имеет алгебраические типы данных, но я все же считаю, что символы были бы очень удобными. Непосредственное использование, которое приходит на ум, состоит в том, что, поскольку символы изоморфны целым числам, вы можете использовать их там, где вы бы использовали интегральный или строковый "первичный ключ".
Синтаксический сахар для атомов может быть незначительным -: что-то или что-то типа; является атомом. Все атомы являются экземплярами типа Atom, который выводит Show и Eq. Затем вы можете использовать его для более описательных кодов ошибок, например
type ErrorCode = Atom
type Message = String
data Error = Error ErrorCode Message
loginError = Error :redirect "Please login first"
В этом случае: перенаправление более эффективно, чем использование строки ( "перенаправление" ) и более понятное, чем целое число (404).
Преимущество может показаться незначительным, но я говорю, что стоит добавить атомы в качестве языковой функции (или, по крайней мере, расширения GHC).
Итак, почему символы не были добавлены в язык? Или я думаю об этом неправильно?