标准ML支持Unicode吗?

12

标准ML支持Unicode吗?

我认为不支持,但找不到任何官方的SML文档来证明这一点。

只需要是或否的回答,但你必须确保回答的准确性。不能猜测或者是我认为的答案。提供权威链接会更好。

2个回答

9
目前标准中并没有其他 Unicode 相关的功能,只能在字符和字符串文字中使用 \uXXXX 转义,以及至少允许将 Unicode 作为 char 或可选的 WideChar.char 的基础字符编码。但标准基础库不规定任何额外的 Unicode 感知功能支持。特定实现可能具有额外的支持,并且您可能会找到一些第三方 Unicode 库,但仅限于此(不幸的是,我手头没有任何指针)。

至少 MLton 目前不完全支持 Unicode。然而,他们声称正在努力解决这个问题,所以在现在和世界末日之间的某个时候,我们可能会看到一个支持它的新版本 :) - Jesper.Reenberg

3
这个问题的答案取决于你对“Unicode”的理解,它是许多标准的集合。我没有看到任何语言或系统完全支持Unicode,并且我甚至不知道所有细节的含义。在SML中,您肯定可以使用UTF-8:该编码是为ASCII应用程序支持Unicode而发明的。这可能会比Java中的UTF-16更好、更有效地表示Unicode,后者虽然官方上“支持Unicode”,但实际上存在许多问题(如代理字符)。在SML字符串中使用UTF-8时,一个问题是如何处理字符串字面量。像Poly/ML这样的系统允许重新定义type string的ML顶层漂亮打印机,并且包装编译器以以Unicode友好的方式处理字符串字面量也是可行的。在基于Poly/ML的Isabelle/ML中就做到了这两点。因此,如果将其作为ML开发平台,则内置了某种形式的Unicode支持(通过所谓的“Isabelle符号”)。

UTF-8使ASCII 数据能够与UTF-8程序轻松配合,同时ASCII应用程序也不会因为UTF-8数据而受到严重破坏。但实际上,要使任何假定ASCII数据正常工作的应用程序适用于UTF-8,通常是一项巨大的任务,因为这些应用程序几乎普遍假定字符宽度固定,而UTF-8具有可变宽度字符。 - Nate C-K

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接