右に「回転」した回数rotate n lと同じ要素を含む新しいリストを返す関数を書きたいと思います。例えば、ln
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 nfor less than 0の振る舞いはnfor 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. これを行う方法はありますか?