0

base 関数と f および l 関数でいくつかのエラーが発生します。何が間違っているのでしょうか?

関数が何をすべきかの例は次のとおりです。

# sepConcat ", " ["foo";"bar";"baz"];;
- : string = "foo, bar, baz"

# sepConcat "---" [];;
- : string = ""

# sepConcat "" ["a";"b";"c";"d";"e"];;
- : string = "abcde"

# sepConcat "X" ["hello"];;
- : string = "hello" 

先生は、私が記入することになっているこのコードをくれました。

let rec sepConcat sep s1 = match s1 with
  |[] -> ""
  |h::t -> 
        let f a x = failwith "to be implemented" in
    let base = failwith "to be implemented" in
    let l = failwith "to be implemented" in
        List.fold_left f base l

私はこれまでに

let rec sepConcat sep s1 = match s1 with
  |[] -> ""
  |h::t -> 
        let f a x = a^sep^x in
    let base = 0 in
    let l = sepConcat sep t in
        List.fold_left f base l
4

2 に答える 2

2

コードで発生するエラーは次のとおりで、コード内を指してbaseいます。

Error: This expression has type int but an expression was expected of type
       string

どういう意味ですか?何が問題ですか?どのように修正しますか?

別の問題は、 の再帰呼び出しですsepConcat。再帰関数を使用していますfold_leftか、または作成していますか? これらのいずれかを実行している場合は、もう一方を実行する必要はありません。

于 2012-10-26T09:41:38.570 に答える