2013-01-20 12 views
11

Unterstützt Standard ML Unicode?Unterstützt Standard ML Unicode?

Ich glaube, es ist nicht, aber kann keine maßgebliche Dokumentation für SML finden, die solche.

Ein Ja oder Nein ist alles, was benötigt wird, aber Sie müssen für eine Tatsache wissen. Kein Raten oder ich glaube Antworten. Ein autoritativer Link wäre besser.

Antwort

9

Nicht wirklich. Alles, was im Standard vorläufig ist, ist die Fähigkeit \uXXXX Escapezeichen in Zeichen- und Zeichenfolgenliteralen zu verwenden, und dass es mindestens erlaubt Unicode als die zugrunde liegende Zeichencodierung für char oder die optionale WideChar.char. Die Standardbasisbibliothek schreibt jedoch keine Unterstützung für zusätzliche Unicode-fähige Funktionen vor.

Besondere Implementierungen möglicherweise zusätzliche Unterstützung, und möglicherweise finden Sie einige Drittanbieter-Unicode-Bibliotheken, aber das ist es (leider habe ich keine Zeiger zur Hand).

+0

Atleast [MLton] (http://mlton.org/Unicode) unterstützt derzeit Unicode nicht vollständig. Wie auch immer, sie behaupten, daran zu arbeiten, also könnten wir zwischen jetzt und der Apokalypse eine neue Version sehen, die das unterstützt :) –

3

Es hängt viel davon ab, was Sie mit "Unicode" meinen, eine Sammlung vieler Standards für viele Dinge. Ich habe keine Sprache oder kein System gesehen, das Unicode vollständig unterstützt, und ich weiß nicht einmal, was das in allen Details bedeuten würde.

Sie können sicher mit UTF-8 in SML arbeiten: diese Codierung wurde erfunden, um es ASCII-Anwendungen zu erleichtern, Unicode zu unterstützen. Dies könnte zu einer besseren und effizienteren Darstellung von Unicode als z.B. UTF-16 in Java gesehen, die "Unicode" offiziell unterstützt, aber dann gibt es viele praktische Probleme (wie Ersatzzeichen).

Mit UTF-8 in SML-Strings, eine Frage ist, wie man mit String-Literalen arbeiten. Systeme wie Poly/ML ermöglichen es, den ML-Toplevel-Pretty-Drucker für type string neu zu definieren, und es ist auch möglich, den Compiler so zu verpacken, dass String-Literale Unicode-freundlich verarbeitet werden. Beides geschieht in Isabelle/ML, die auf Poly/ML basiert. Wenn Sie also diese große Theorem-Testumgebung als ML-Entwicklungsplattform verwenden, haben Sie eine Art von Unicode-Unterstützung eingebaut (über sogenannte "Isabelle-Symbole").

+0

UTF-8 macht es einfach für ASCII * Daten * mit einem UTF-8 Programm zu arbeiten, und für ASCII-Anwendungen, die nicht zu sehr von UTF-8-Daten unterbrochen werden. Tatsächlich ist das Ändern einer Anwendung, die annimmt, dass ASCII-Daten mit UTF-8 ordnungsgemäß funktionieren, normalerweise eine monströse Aufgabe, da solche Anwendungen fast immer eine feste Zeichenbreite annehmen und UTF-8 Zeichen mit variabler Breite hat. –