【发布时间】:2012-09-25 15:06:12
【问题描述】:
为什么会出现 tycon mismatch operator and operand do not agree 错误?有什么解决方案的建议吗?
fun reve (x:string) = implode o rev o explode x
【问题讨论】:
为什么会出现 tycon mismatch operator and operand do not agree 错误?有什么解决方案的建议吗?
fun reve (x:string) = implode o rev o explode x
【问题讨论】:
问题在于,函数应用绑定比o强。
即解释为:
fun reve x = implode o rev o (explode x);
由于explode x 是char list 而不是函数,所以这将失败。
您可以通过正确放置括号来解决此问题
fun reve x = (implode o rev o explode) x;
或者用无点符号来写:
val reve = implode o rev o explode
还可以定义一个右关联函数应用运算符,通常称为$,它可以在没有括号的情况下执行您想要的操作:
(* Right-associative function application *)
infixr $
fun f $ x = f x;
fun reve x = implode o rev o explode $ x
【讨论】: