簡體   English   中英

在Ocaml中保存附加列表

[英]Saving an appended list in Ocaml

語境:

我試圖定義一個函數insert秒的元素x在列表中,在任的headtail的名單,根據關的新元素是否小於當前的head列表。

問題:

問題是,當我運行自己創建的某些代碼時( 底部顯示 ),我的列表返回到其原始狀態,而不保存以前完成的追加。 我意識到我可以使用一個簡單的let變量或相同的let語句來做到這一點,但是我想將新列表保存為當前形式。 是否可以在中完成而無需創建新列表?

我的問題是:如何在不創建新列表或變量的情況下附加到列表,並將其保存為新形式。

研究:

我正在SO上查看此答案 ,並且已經將其合並到我的代碼中。 但是,當我運行此代碼時:

let rec insertion x y = 
  match y with 
    | [] -> x::y 
    | h::tl -> if h >= x then x::y 
               else           y@[x]
;;

, 伴隨着:

let y = [1;2;3];;
insertion 0 y  ;;
y              ;;

我回來:

val y : int list = [1; 2; 3]
- : int list = [0; 1; 2; 3]
- : int list = [1; 2; 3]

是不可能的。 OCaml的列表是不可變的,您無法更改。 您無法更改其值,也無法更改其長度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM