どう書く? - 隣り合う二項の差

隣り合う二項の差- どう書く? org
これはひどい。関数プログラミングらしく考えられませんでした。。。。

let Diff (xs : int list) =
  let mutable result = []
  for i=1 to xs.Length-1 do
    result <- ((xs.[i]-xs.[i-1])::result)
  List.rev result

[<EntryPoint>]
let main(args : string[]) =
  Diff [3; 1; 4; 1; 5; 9; 2; 6; 5] |> List.iter (fun i -> printf "%d, " i)
  0