0

タイコン不一致演算子とオペランドが一致しないエラーがあるのはなぜですか? 解決策の提案はありますか?

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 に答える