[英]Saving an appended list in Ocaml
我試圖定義一個函數ocaml的是insert
秒的元素x
在列表中,在任的head
或tail
的名單,根據關的新元素是否小於當前的head
列表。
問題是,當我運行自己創建的某些代碼時( 底部顯示 ),我的列表返回到其原始狀態,而不保存以前完成的追加。 我意識到我可以使用一個簡單的let
變量或相同的let
語句來做到這一點,但是我想將新列表保存為當前形式。 是否可以在ocaml中完成而無需創建新列表?
我的問題是:如何在不創建新列表或變量的情況下附加到列表,並將其保存為新形式。
我正在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.