Иными словами, если я хочу полностью универсальную функцию, как обеспечить преобразование во время компиляции / выполнения между числовыми типами.
Например:
let f x = x + 1 // int -> int
автоматически предполагаетint
из-за 1
.
Мой текущий взлом на это:
let gettype (x:'T) = typeof<'T> // 'T -> Type
let one x = Convert.ChangeType (1, (gettype x)) // 'a -> obj
let f x = x + one(x) // obj -> obj
Но это не работает, поскольку +
не определено для obj
s