Поддерживает ли Standard ML Unicode?

Поддерживает ли Standard ML Unicode?

Я считаю, что это не так, но не могу найти никакой авторитетной документации для SML, в которой говорится об этом.

Да или нет — это все, что нужно, но вы должны знать наверняка. Никаких догадок или я верю ответы. Авторитетная ссылка была бы лучше.


person Guy Coder    schedule 20.01.2013    source источник


Ответы (2)


Не совсем. Все, что есть в стандарте на данный момент, — это возможность использовать escape-последовательности \uXXXX в символьных и строковых литералах, а также то, что он по крайней мере разрешает Unicode в качестве основной кодировки символов для char или необязательного WideChar.char. Но стандартная базовая библиотека не предписывает какой-либо поддержки дополнительных функций, поддерживающих Unicode.

Конкретные реализации могут иметь дополнительную поддержку, и вы, возможно, можете найти некоторые сторонние библиотеки юникода, но это все (к сожалению, у меня нет под рукой указателей).

person Andreas Rossberg    schedule 20.01.2013
comment
По крайней мере, MLton в настоящее время не полностью поддерживает Unicode. Однако они утверждают, что работают над этим, поэтому где-то между настоящим моментом и апокалипсисом мы можем увидеть новую версию, которая его поддерживает :) - person Jesper.Reenberg; 20.01.2013

Во многом это зависит от того, что вы подразумеваете под «Unicode», который представляет собой набор многих стандартов для многих вещей. Я не встречал ни одного языка или системы, которые бы полностью поддерживали Unicode, и я даже не знаю, что бы это значило во всех деталях.

Вы, безусловно, можете работать с UTF-8 в SML: эта кодировка была изобретена, чтобы облегчить приложениям ASCII поддержку Unicode. Это может привести к лучшему и более эффективному представлению Unicode, чем, например. UTF-16 замечен в Java, который официально «поддерживает Unicode», но с ним возникает много практических проблем (например, суррогатные символы).

При использовании UTF-8 в строках SML один вопрос заключается в том, как работать со строковыми литералами. Такие системы, как Poly/ML, позволяют переопределить симпатичный принтер верхнего уровня ML для type string, а также возможно обернуть компилятор для обработки строковых литералов удобным для Unicode способом. И то, и другое выполняется в Isabelle/ML, основанном на Poly/ML. Поэтому, если вы возьмете эту большую среду для доказательства теорем в качестве платформы для разработки машинного обучения, у вас будет какая-то встроенная поддержка Unicode (через так называемые «символы Изабель»).

person Makarius    schedule 08.10.2013
comment
UTF-8 упрощает работу данных ASCII с программой UTF-8, а приложения ASCII не слишком сильно нарушаются данными UTF-8. На самом деле изменение любого приложения, которое предполагает, что данные ASCII должны работать с UTF-8, обычно является чудовищной задачей, потому что такие приложения почти всегда предполагают фиксированную ширину символов, а UTF-8 имеет символы переменной ширины. - person Nate C-K; 16.10.2015