OCaml使用List.fold_左键连接字符串列表

OCaml使用List.fold_左键连接字符串列表,ocaml,Ocaml,我得到了一些关于基函数和f,l函数的错误,我错了什么 函数应该做什么的示例如下 # sepConcat ", " ["foo";"bar";"baz"];; - : string = "foo, bar, baz" # sepConcat "---" [];; - : string = "" # sepConcat "" ["a";"b";"c";"d";"e"];; - : string = "abcde" # sepConcat "X" ["hello"];; - : string =

我得到了一些关于基函数和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

代码中出现的错误如下,指向代码中的
base

Error: This expression has type int but an expression was expected of type
       string
这是什么意思?有什么问题?你怎么修理它


另一个问题是递归调用
sepcontat
。您是在使用左折叠还是在编写递归函数?如果您正在执行其中一项操作,则不需要执行另一项操作。

代码中出现的错误如下,指向代码中的
base

Error: This expression has type int but an expression was expected of type
       string
这是什么意思?有什么问题?你怎么修理它


另一个问题是递归调用
sepcontat
。您是在使用左折叠还是在编写递归函数?如果您正在执行其中一项操作,则不需要执行另一项操作。

下面是一个使用
fold\u left
和可选参数的实现:

let concat ?(sep="") l =
  List.fold_left (fun acc e -> acc^sep^e) (List.hd l) (List.tl l);;
val concat : ?sep:bytes -> bytes list -> bytes = <fun>

下面是一个使用
fold_left
和可选参数的实现:

let concat ?(sep="") l =
  List.fold_left (fun acc e -> acc^sep^e) (List.hd l) (List.tl l);;
val concat : ?sep:bytes -> bytes list -> bytes = <fun>

我得到了基的编译错误,我尝试了“”、0和空格,但似乎没有解决它。PSA:在考试期间不会出现stackoverflow:)我得到了基的编译错误,我尝试了“”、0,PSA:考试期间不会有stackoverflow:)我必须遵循框架,所以我需要递归sepcont和call List.fold_左,我不确定基本情况,因为已经有了|【】->那么我应该在基本情况下放什么呢?骨架没有对
sepcontat
的递归调用,您添加了它。事实上,没有必要使函数sepcont递归。我必须遵循框架,所以我需要递归sepcont和调用List.fold_左,我不确定基本情况,因为已经有|[]->那么我应该在基本情况下放什么呢?框架没有对
sepcont
的递归调用,您添加了它。实际上,没有必要使函数sepcont递归。