0

为什么会出现 tycon mismatch operator 和 operator do not agree 错误?任何解决方案的建议?

fun reve (x:string) = implode o rev o explode x
4

1 回答 1

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
于 2012-10-04T14:50:22.460 回答