2013-01-20 124 views
11

標準ML是否支持Unicode?標準ML是否支持Unicode?

我相信它沒有,但無法找到任何SML的權威性文檔陳述。

一個是或否是所需要的,但你必須知道一個事實。沒有猜測或我相信答案。權威的聯繫會更好。

回答

9

不是。所有有在暫時的標準是在字符和字符串使用\uXXXX逃逸的能力,以及它確實至少允許 Unicode作爲底層字符編碼char或可選WideChar.char。但標準基礎庫不規定對額外的Unicode感知功能的任何支持。

特定的實現可能會有額外的支持,你可能會找到一些第三方的unicode庫,但這是關於它(不幸的是,我手邊沒有指針)。

+0

Atleast [MLton](http://mlton.org/Unicode)目前不完全支持unicode。但是他們聲稱正在開發它,所以在現在和啓示錄之間的某個地方,我們可能會看到一個支持它的新版本:) –

3

它很大程度上取決於「Unicode」,它是許多標準的集合。我還沒有看到任何支持Unicode的語言或系統,我甚至都不知道這是什麼意思。

您當然可以在SML中使用UTF-8:編碼是爲了使ASCII應用程序易於支持Unicode而發明的。這可能會導致它比Unicode更好更高效地表示Unicode。在Java中看到的UTF-16,它正式支持Unicode,但是它有許多實際問題(如代理字符)。

在SML字符串中使用UTF-8時,一個問題是如何使用字符串文字。像Poly/ML這樣的系統允許爲type string重新定義ML頂層漂亮打印機,並且編譯器以Unicode友好的方式處理字符串文字也是可行的。這兩項都是在基於Poly/ML的Isabelle/ML中完成的。所以,如果你把這個大定理驗證環境作爲ML開發平臺,你就有了一些Unicode內置的支持(通過所謂的「Isabelle符號」)。

+0

UTF-8使得ASCII *數據*可以輕鬆用於UTF-8程序,並且對於ASCII應用程序不會被UTF-8數據破壞太多。實際上,更改任何假定ASCII數據與UTF-8一起正常工作的應用程序通常是一項可怕的任務,因爲這類應用程序幾乎普遍採用固定的字符寬度,而UTF-8具有可變寬度的字符。 –