LeetCode 19. Remove Nth Node From End of List in F#

URL

leetcode.com/problems/remove-nth-node-from-..

Code

github.com/syohex/dotnet-study/tree/master/..

type List =
    | Leaf
    | Node of int * List

let removeNthFromEnd(head: List) (n: int) : List =
    let rec removeNthFromEnd' node pos n =
        match node with
        | Leaf -> pos, Leaf
        | Node(v, next) ->
            let lastPos, next' = removeNthFromEnd' next (pos + 1) n
            if lastPos - pos = n then
                lastPos, next'
            else
                lastPos, Node(v, next')

    removeNthFromEnd' head 0 n |> snd