You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Standard ML中chr与Char.chr的差异及SML 97合规性问询

关于SML中chr和Char.chr的差异与标准合规性

你的测试代码:

val a = chr 65 : char
val b = Char.chr 65: char
val _ = print (Char.toString a)
val _ = print (Char.toString b)

运行输出:

AA

从结果能看出两者功能一致,但从标准规范和兼容性角度,两者有明确区别:

  • 功能完全无差异:不管是chr还是Char.chr,作用都是将整数类型的ASCII码值转换为对应的字符类型值,你的例子里都把65转成了字符'A'。
  • 标准合规性区别:
    • Char.chr是Standard ML 97标准明确规定的写法,属于Char标准模块下的官方函数,所有符合SML97规范的实现(如MLton、SML/NJ、Poly/ML)都必须支持,跨环境兼容性拉满。
    • chr是部分SML实现(比如SML/NJ)为了简化输入,在顶层环境中额外添加的简写别名,不属于SML97标准的强制内容。换用严格遵循标准的轻量实现时,直接写chr可能会触发“未绑定标识符”的错误。

总结:如果要编写符合标准、跨环境通用的SML代码,优先使用Char.chr;如果只是在特定实现(如SML/NJ)下快速测试,chr也能正常使用,但不具备通用性。

内容的提问来源于stack exchange,提问作者Lone Learner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 09:34:50