打印UTF-8空集
这可能是一个以Windows为中心的问题。不管怎样,我决定在SML中玩一玩。这是自然数的一种编码,其中每个数都由一个纯集合表示——一个元素本身就是集合的集合 我编写了以下代码:打印UTF-8空集,utf-8,sml,smlnj,windows-console,Utf 8,Sml,Smlnj,Windows Console,这可能是一个以Windows为中心的问题。不管怎样,我决定在SML中玩一玩。这是自然数的一种编码,其中每个数都由一个纯集合表示——一个元素本身就是集合的集合 我编写了以下代码: datatype set = EMPTY | SET of set list; fun succ EMPTY = SET [EMPTY] | succ (SET sets) = SET (sets @ [SET sets]); fun ordinal 0 = EMPTY | ordinal n = succ
datatype set = EMPTY | SET of set list;
fun succ EMPTY = SET [EMPTY]
| succ (SET sets) = SET (sets @ [SET sets]);
fun ordinal 0 = EMPTY
| ordinal n = succ (ordinal (n-1));
fun pprint S e =
let
fun f EMPTY = e
| f (SET sets) = "{" ^ (String.concatWith "," (map f sets)) ^ "}"
in
f S
end;
fun display n e = print ( "\n" ^ (pprint (ordinal n) e ) ^ "\n\n");
display函数采用自然数和空集的字符串表示形式。例如:
- display 3 "O";
{O,{O},{O,{O}}}
val it = () : unit
(与维基百科中关于冯·诺依曼序数的条目相吻合)。作为一种繁荣,我想使用一个,所以我做了以下几点:
- display 3 "\195\152";
{Ø,{Ø},{Ø,{Ø}}}
}}
val it = () : unit
(在启动SML之前,需要在窗口的命令提示符下运行chcp 65001
,以使其正常工作)
在弦的中间有一个幻像线断裂,还有一个额外的“}”。我不知道为什么。我已经尝试过其他代码的值<代码> n>代码>,有时在中间行得到幻像框,并且总是有一个额外的“}”。我尝试过各种变通方法(除了放弃Windows for Linux),但没有成功
有没有人知道一种可靠的方法可以通过SML中的“O”来打印空集?在丹麦语中,大写字母Ø以8位编码的形式出现。仅供参考,它在我的OS X上显示得很好。@IonuțG.Stan肯定是Windows命令提示符处理Unicode的方式或SML/NJ将“\xxx”字符传递给Windows的方式有问题。古怪的