этой: https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/arrays#array-slicing-and-multidimensional-arrays
Не получается правильно имплементировать оператор умножения 'T на SimpleMatrix<'T>
static member (*)(k: 'T, matrix: SimpleMatrix<'T>) =
let resRow, resColumn = matrix.Dim
let newMatrix = SimpleMatrix<'T>(resRow, resColumn)
for x in 0 .. resRow - 1 do
for y in 0 .. resColumn - 1 do
let m = matrix.[x,y]
newMatrix.[x, y] <- k * m
newMatrix
Как тут написать type constraint, чтобы оно ожило? Или так дженериковую матрицу люди не пишут?)
inline
написать inline функцию вместо метода?
static member inline
попробовал, от изначальной ошибки не спасает, видимо таки type constraint нужен
А он тебе прямо в ошибке пишет нужный.
жаль нет в .net чего-нибудь типо INumericalType
Выглядит это как-то так в итоге. https://github.com/gbaydin/FsAlg/blob/master/src/FsAlg/Matrix.fs#L33-L44
Обсуждают сегодня