Полная и эффективная реализация модуля NumericLiteral

Основываясь на обсуждении в этого вопроса , может ли кто-нибудь предоставить код или ссылку на код, показывает полную реализацию модуля 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 

Как это можно улучшить и завершить?

5
задан Community 23 May 2017 в 10:27
поделиться