为什么有一个tycon不匹配运算符和操作数不同意错误?对解决方案的任何建议?
fun reve (x:string) = implode o rev o explode x
答案 0 :(得分:2)
问题在于,函数应用程序的绑定强于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