【发布时间】:2018-09-16 00:42:20
【问题描述】:
我正在使用 SML 进行编程,试图获取一个字符串并将所有字符大写。一般来说,我是 SML 和函数式编程的新手,我无法完全匹配类型。我的代码如下所示:
fun allCaps (str) =
let val ex = explode(str)
in
let fun toCaps (acc, nil: char list) = acc
| toCaps (acc, h::t: char list) = toCaps ((acc::t), [Char.toUpper(h)])
in
toCaps(ex, []:char list)
end
end;
解释器给了我错误
Error: operator and operand don't agree [tycon mismatch]
operator domain: char * char list
operand: char list * char list
in expression:
toCaps (acc :: t,Char.toUpper h :: nil)
...
toCaps (nil: char list,ex)
这对我来说毫无意义,因为它在整个时间处理列表的函数中看起来非常明确。无论如何,我如何初始化一个空的 char 类型来获得匹配的类型?
【问题讨论】:
标签: functional-programming sml smlnj