Я пытаюсь определить функцию, factorize, которая использует ограничения структурного типа (требует статических членов Zero, One, + и /), аналогичных Seq.sum, так что их можно использовать с int, long, bigint, и т.д. Я не могу получить синтаксис правильно и не могу найти много ресурсов по этому вопросу. Это то, что у меня есть, пожалуйста, помогите.
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) []