在 OCaml 中使用 fold_left 时出错
Error in using fold_left in OCaml
我正在尝试将列表中的整数转换为其相应的 ASCII 值,然后将它们连接起来形成一个字符串。这是我试过的:
# let l = [65;66;67];;
# List.fold_left (fun x y -> char_of_int x ^ char_of_int y) "" l;;
我收到以下错误:
Error: This expression has type char but an expression was expected of type
string
将 char_of_int x
标记为错误。
错误发生,因为OCaml运算符^
只接受两个字符串,它不能直接连接两个字符。为了构建字符串,您首先必须将单个字符转换为字符串(长度为 1)。然后你可以连接这些短字符串。
# let chars = List.map char_of_int l;;
val chars : char list = ['A'; 'B'; 'C']
# let strings = List.map (String.make 1) chars;;
val strings : string list = ["A"; "B"; "C"]
# String.concat "" strings;;
- : string = "ABC"
我正在尝试将列表中的整数转换为其相应的 ASCII 值,然后将它们连接起来形成一个字符串。这是我试过的:
# let l = [65;66;67];;
# List.fold_left (fun x y -> char_of_int x ^ char_of_int y) "" l;;
我收到以下错误:
Error: This expression has type char but an expression was expected of type
string
将 char_of_int x
标记为错误。
错误发生,因为OCaml运算符^
只接受两个字符串,它不能直接连接两个字符。为了构建字符串,您首先必须将单个字符转换为字符串(长度为 1)。然后你可以连接这些短字符串。
# let chars = List.map char_of_int l;; val chars : char list = ['A'; 'B'; 'C'] # let strings = List.map (String.make 1) chars;; val strings : string list = ["A"; "B"; "C"] # String.concat "" strings;; - : string = "ABC"