右に「回転」した回数rotate n l
と同じ要素を含む新しいリストを返す関数を書きたいと思います。例えば、l
n
rotate 0 [1;2;3;4]
返す[1;2;3;4]
rotate 1 [1;2;3;4]
べき 返す[4;1;2;3]
rotate 2 [1;2;3;4]
べき 返すべき 返すべき 返すべき 返す[3;4;1;2]
rotate 3 [1;2;3;4]
べき 返す[2;3;4;1]
rotate 4 [1;2;3;4]
べき[1;2;3;4]
など
rotate n
for less than 0の振る舞いはn
for equal to 0 と同じはずです。これを のリスト連結演算子をn
使わずに書きたいと思います。@
Pervasives
更新:これが私が書いた回転関数です:
let rot1 l =
let rec iterate acc = function
[] -> []
| [x] -> x :: List.rev acc
| x :: l -> iterate (x :: acc) l
in
iterate [] l;;
しかし、私はそれを使わずに同じことをしたいList.rev
. これを行う方法はありますか?