fun incFirst s = chr(ord s + 1) ^ substring(s, 1, size s -1);
但我的“新泽西标准ML v110.76 [建于:2013年10月22日星期二14:04:11]”不喜欢它。
错误:运算符和操作数不一致[tycon mismatch]
我甚至不能这样做:
> ord "c";
没有收到错误
错误:运算符和操作数不一致[tycon mismatch]
无法识别
load "Char";
任一。我做错了什么?
答案 0 :(得分:2)
您需要执行ord #"c"
,因为"c"
是一个字符串而#"c"
是一个字符。
您的功能有两个问题:
ord
这是一个丑陋的解决方案:
fun incFirst s =
Char.toString(chr(ord(String.sub(s,0)) + 1)) ^ substring(s, 1, size s -1);
我认为您可以使用explode
和implode
以及带有模式匹配的let
块来制作更漂亮的解决方案,但我不记得顶部有足够的SML语法我的头脑去做。