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