Szablony funkcji w F #

Powiedzmy, że rozwiązuję konkretny problem i wymyślam funkcję

let function parameter1 ... = 
     a lot of adding, multiplying & so on with a lot of 
     literals all over the place

Teraz ta funkcja działa dobrze, jeśli moje parametry są typu int. Ale gdzieś będę potrzebował go do 11, potrzebuję tego dodatkowego push do int64 lub nawet BigIntegera. Więc co mam zrobić? Kopiuję i wklejam funkcję, zmieniam nazwę i zaczynam polować na wszystkie literalne wystąpienia, które sprawiają, że kompilator uważa, że ​​funkcja powinna działać na int. I to do bani.

Czy jest na to sposób:

let greatFunction param1 param2 = (param1+1)/(param2*2)

gdzie param1 i param2 mogą być dowolnymi kombinacjami typów całkowitych?

Edytować:

Rozszerzając nieco na świetną wskazówkę kvb poniżej, wymyśliłem następujące

module NumericLiteralG 

  let inline FromZero() = LanguagePrimitives.GenericZero
  let inline FromOne() = LanguagePrimitives.GenericOne
  let inline FromInt32 n =
    let rec loop nIn nOut = 
        if nIn>0 then loop (nIn - 1) (nOut + LanguagePrimitives.GenericOne)
        else nOut
    loop n LanguagePrimitives.GenericZero

dzięki temu staje się nieco mniej brzydki

let inline halfSquare num =
   let res = num / 2G
   res * res

let solve1 = halfSquare 5I 
let solve2 = halfSquare 5.0
let solve3 = halfSquare 5uy

Teraz pytanie brzmi: czy powinienem to wykorzystać? Jeśli nie, dlaczego nie?

questionAnswers(4)

yourAnswerToTheQuestion