type TotalSizeToken = TotalSizeToken with
static member TotalSize(_: TotalSizeToken, (a,b,c,d,e)): int = a*b*c*d*e
static member TotalSize(_: TotalSizeToken, (a,b,c,d)): int = a*b*c*d
static member TotalSize(_: TotalSizeToken, (a,b,c)): int = a*b*c
static member TotalSize(_: TotalSizeToken, (a,b)): int = a*b
static member TotalSize(_: TotalSizeToken, x: int): int = x
let inline size_to_total_size x =
((^s) : (static member TotalSize: TotalSizeToken * ^s -> int) TotalSizeToken, x)
let t = size_to_total_size (1,5) // Error: Expecting a type supporting the operator TotalSize, but given a tuple type.
Я не ожидал, что аргумент x
в size_to_total_size
потребует элемента TotalSize. Это похоже на ошибку компилятора.Как получить произведение кортежа int с переменным числом аргументов?
Я не уверен, как заставить это работать. Есть идеи?