List ocaml列表到数组

List ocaml列表到数组,list,ocaml,List,Ocaml,我正在尝试将具有指定宽度的列表转换为数组。 例如,我想将其转换为: int list = [97; 114; 110; 97; 117; 100; 2] 到 我不习惯ocaml,所以我尝试使用以下代码: let split list width = let rec aux i acc = function | [] -> List.rev acc, [] | h :: t as l -> if i = 0 then List.rev

我正在尝试将具有指定宽度的列表转换为数组。 例如,我想将其转换为:

int list = [97; 114; 110; 97; 117; 100; 2]

我不习惯ocaml,所以我尝试使用以下代码:

let split list width =
  let rec aux i acc = function
    | [] -> List.rev acc, []
    | h :: t as l -> 
      if i = 0 
      then List.rev acc, l
      else aux (i-1) (h :: acc) t  in
aux width [] list;;

如果你想用一种语言编写代码,你必须习惯:)你必须花几个小时,至少阅读OCaml的代码。第一章足以解决你的例子


在您的特定示例中,(为了使其更具可读性,我冒昧地对其进行了修改),
aux n[]list
中的变量
n
未绑定。事实上,
n
应该是什么意思?另一个提示是,函数的
宽度
参数未在函数体中使用。你可能已经明白了。。。但不要急于修复它。首先,阅读OCaml的入门课程:)

我将在这个问题上逆向研究

首先,我将创建一个函数,它接受一个列表、一个填充值和必须应用填充的次数。大概是这样的:

val add_padding: int -> int -> int list -> int list
接下来,我将创建一个函数,它接受一个列表和一个宽度,并返回一个新列表和传入的列表的其余部分。。。如果传入列表太短,则此操作将失败。比如:

val create_new_list: int -> 'a list -> 'a list * 'a list 

使用这两个函数,您应该能够拆分输入列表。

您的代码有什么问题?请具体说明,请参阅。
val create_new_list: int -> 'a list -> 'a list * 'a list