Основываясь на обсуждении в этом вопросе, может ли кто-либо предоставить код или ссылку на код, демонстрируя полную реализацию модуля NumericLiteralX
(например, этот)? Меня особенно интересует эффективная реализация FromInt32
/64
для модуля NumericLiteralX
, который облегчает общие числовые операции. Здесь возможно неэффективная реализация, взятая из вышеупомянутого вопроса:
module NumericLiteralG =
let inline FromZero() = LanguagePrimitives.GenericZero
let inline FromOne() = LanguagePrimitives.GenericOne
let inline FromInt32 (n:int) =
let one : ^a = FromOne()
let zero : ^a = FromZero()
let n_incr = if n > 0 then 1 else -1
let g_incr = if n > 0 then one else (zero - one)
let rec loop i g =
if i = n then g
else loop (i + n_incr) (g + g_incr)
loop 0 zero
Как это можно улучшить и завершить?