Mam problem z F # Jednostki miary podczas definiowania operatora, który ma parametr z ogólną jednostką miary zdefiniowaną w kategoriach ogólnej jednostki miary z innego parametru. NpF # jednostki ogólne w parametrach zdefiniowanych względem siebie
type Quotient<[<Measure>]'b> =
| Divisible of int64<'b>
| Remaindered of int64<'b> * int64<'b>
let (|/) (x: int64<'a>) (y: int64<'a/'b>) =
let q = x/y
if q * y = x then Divisible q else Remaindered (q, x - (q * y))
Tutaj y
jest zdefiniowana w <'a/'b>
, gdzie <'a>
to jednostka x
. Oczekuję, że typ (|/)
będzie int64<'a> -> int64<'a/'b> -> Quotient<'b>
, jednak kompilator mówi mi, że typ to x:int64<'b> -> y:int64 -> Quotient<'b>
.
Chcę tego użyć do konwersji typów, w których liczby dziesiętne nie są możliwe. Moim celem było stworzenie operatorów do pracy z Quotients zamiast logicznego obliczania reszty w każdej konwersji typu. Czy jest możliwe osiągnięcie tego celu, czy też powinienem inaczej podchodzić do konwersji typu?