指定されたリストのすべての位置に整数 n を挿入する関数を作成しようとしています。少し例を挙げinsert_everywhere 0 [1;2] -> [[0;1;2]; [1;0;2]; [1;2;0]]
ます。私はこれを書きました:
let insert_everywhere l n =
let l_aux = [] in
let rec aux l1 l2 = match l1 with
| [] -> []
| x::tl -> (l_aux @ [n] @ l1) :: aux tl (l_aux @ [x])
in aux l l_aux
;;
問題は、呼び出しaux tl (l_aux @ [x])
が私が望むことをしないということです。私の考えは次のとおりです。リストの先頭を読んでいるときに、別のリストに挿入し、それを番号n
とリストの残りの部分に追加します。このようにして、除外したリストの最終的なリストが得られますが、現在の実装ではありません…</p>