@@ -2,44 +2,6 @@ namespace GraphBLAS.FSharp
22
33open Brahma.FSharp .OpenCL .WorkflowBuilder .Evaluation
44
5- (*
6- везде вместо того, чтобы возвращать unit, можно возвращать измененный объект,
7- но нужно подумать, насколько создание нового объекта лучше/хуже изменения существующего
8- копирование большмх матриц явно хуже и зачем, а вот Clear сделать не inplace мб имеет смысл
9-
10- везде методы, тк проперти не соответсвуют концепции отсутствия вычислений,
11- хотя выглядеть будет оч плохо
12-
13- можно все операции, в которых не меняется структура объекта, сделать inplace
14- (хотя, если операция затрагивает весь объект, то все равно читать и писать,
15- единственно, что памяти единовременно в 2 раза больше потребуется)
16-
17- теперь есть единственный метод GetMask (без GetComplemented)
18- тк это теперь не свойство, то требует аргумента, а значит можно передавать isComplemented
19-
20- методы Extract и Assign, которые возвращают/присваивают подграф, семантически отличаются от тех, что в C
21- здесь возвращаемый подграф (подматрица) всегда того же размера, что и изначальная матрица
22- (т.е в матрице смежности вершины графа не удалаются, а только ребра)
23- поэтому перед операцией нужно сравнивать размерности матрицы и маски, по которой мы получаем подграф
24- чтобы удалить еще и вершины, можно потом сделать resize
25-
26- у вектора размерность теперь называется size, а не length, потому что идейно вектор -- набор вершин
27- + в C API тоже size
28-
29- метод Prune можно переименовать в Select или Filter
30-
31- нужно выяснить, как curried методы интеропятся с C#
32-
33- возможно, стоит отказаться от перегрузок Extract и Assign, чтобы сделать их curried,
34- тем самым, избавившись от скобок при вызове
35-
36- можно все методы сделать как методы C# (без curried), а рядом положить модуль с curried функциями
37- это нужно, для более гибкого интерфейся и лучшего интеропа с C#
38-
39- пара массивов лучше ложиться на opencl чем массив пар. Поэтому изменились аргументы Mask1D
40- стоит это учесть и в дугих местах. Например разреженный вектор должен принимать пару массивов вместо массива пар
41- *)
42-
435[<AbstractClass>]
446type Matrix < 'a when 'a : struct and 'a : equality >( nrow : int , ncol : int ) =
457 abstract RowCount: int
0 commit comments