为什么会出现 tycon mismatch operator 和 operator 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