Ограничения типа статического члена F #

Я пытаюсь определить функцию factorize, которая использует структурные ограничения типа (требуются статические члены Zero, One, + и /), аналогичные Seq.sum, чтобы ее можно было использовать с int, long, bigint и т. Д. I не могу понять синтаксис правильно, и не могу найти много ресурсов по этому вопросу. Вот что у меня есть, помогите пожалуйста.

let inline factorize (n:^NUM) =
    ^NUM : (static member get_Zero: unit->(^NUM))
    ^NUM : (static member get_One: unit->(^NUM))
    let rec factorize (n:^NUM) (j:^NUM) (flist: ^NUM list) = 
        if n = ^NUM.One then flist
        elif n % j = ^NUM.Zero then factorize (n/j) (^NUM.One + ^NUM.One) (j::flist)
        else factorize n (j + ^NUM.One) (flist)
    factorize n (^NUM.One + ^NUM.One) []

Ответы на вопрос(1)

Ваш ответ на вопрос