如何在F#中表达char的全部值?

时间:2015-06-08 10:47:13

标签: unicode f#

Unicode代码点的范围从U+000000U+10FFFF。在F#中写自己的词法分析器时,我遇到了以下问题:

对于字符集定义,我打算使用类型为char * char的简单元组,表示一系列字符。省略一些外围细节,我还需要一个调用All的范围,它应该是完整的unicode范围。

现在,可以定义一个char文字:let c = '\u3000'。对于字符串,也可以像这样引用一个真正的32位代码点:let s = "\U0010FFFF"。但后者不适用于字符。原因是,.NET中的char是16位unicode字符,代码点会产生2个字,而不是1个字。

所以问题是 - 有没有办法可以坚持我的char * char元组并以某种方式定义我的All或者我需要将其更改为uint32 * uint32并定义我的所有内容字符范围为32位值?如果我必须改变,是否有一种类型我应该优先于uint32我还没有发现?

提前谢谢。

0 个答案:

没有答案