[英]ocaml list to array array
我正在嘗試將具有指定寬度的列表轉換為數組數組。 例如,我想轉換這個:
int list = [97; 114; 110; 97; 117; 100; 2]
到
int array array = [| [|97; 114; 110|]; [|97; 117; 100|]; [|2; 0; 0|] |]
我不習慣 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;;
如果你想在一個語言代碼,你必須習慣它:)你必須花了幾個小時,並至少閱讀intoduction到OCaml的。 第一章足以解決你的例子。
在您的特定示例中(我冒昧地重新縮進,以使其更具可讀性), aux n [] list
的變量n
未綁定。 確實, n
應該是什么意思? 另一個提示是,函數體中沒有使用函數的width
參數。 你可能已經明白了……但不要急於修復它。 首先,閱讀 OCaml 的介紹課程 :)
我會在這個問題上倒退。
首先,我將創建一個函數,它接受一個列表、一個填充值和必須應用填充的次數。 像這樣的東西:
val add_padding: int -> int -> int list -> int list
接下來我將創建一個函數,它接受一個列表和一個寬度並返回一個新列表和傳入的列表的其余部分...如果傳入的列表太短,這應該會失敗。 就像是:
val create_new_list: int -> 'a list -> 'a list * 'a list
使用這兩個函數,您應該能夠拆分輸入列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.