Modelos de função em F #

Digamos que estou resolvendo um problema em particular e crie uma função

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

Agora esta função funciona bem se meus parâmetros forem do tipo int. Mas em algum lugar eu vou precisar para ir até 11, eu vou precisar desse push extra para o int64 ou mesmo para o BigInteger. Então o que eu faço? Eu copio e colo a função, mudo o nome e vou procurar todas as aparências literais que fazem o compilador achar que a função deve operar em int. E isso é uma merda.

Existe uma maneira de fazer isso:

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

onde param1 e param2 podem ser qualquer combinação de tipos inteiros?

Editar:

Expandindo um pouco sobre uma ótima dica de kvb abaixo, eu vim com o seguinte

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

então fica um pouco menos feio quando usado

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

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

Agora a questão é que devo usar isso? Se não, por que não?

questionAnswers(4)

yourAnswerToTheQuestion