We plan to the following changes in the next major version up.
Backward incompatible changes
[x] Low-level internal representation of flags. (The flags are defined as polymorphic variant in ver 3 or below, but will be implemented as char because BLAS/LAPACK's flags are characters. Overhead of conversion from polymorphic variant into char will be removed.)
The type of parameters ?up (for symmetric or triangular matrices) is bool in ver 3, [<A | L |U ] Slap.Common.uplo` in ver 4.
The type of parameters ?diag (for unit or non-unit triangular matrices) is [N | U ] in ver 3, Slap.Common.diag in ver 4.
The type of parameter uplo of lacpy is [L | U ] option in ver 3, [<A | L |U ] Slap.Common.uplo` in ver 4.
[ ] Changing subtyping tricks by phantom types. (The current version uses a subtyping trick for flags, vectors, matrices described at our paper, but polymorphic variant can achieve subtyping more simply. We will adopt the latter.)
The types of flags in Slap.Common, and 'cnt_or_dsc parameters of vectors and matrices will be changed.
[x] Simplification of type parameters of Slap.Common.trans. ((('m, 'n, 'cnt_or_dsc) mat -> ('n, 'm, 'cnt_or_dsc) mat) trans is too long since it has extra type parameter 'cnt_or_dsc. (m * 'n -> 'n * 'm) trans is much simpler.)
The type of transpose flags in Slap.Common and parameters ~trans will be changed.
[ ] Deprecation of several functions.
Slap.Size.pred_dyn |-> Slap.Size.pred
Slap.Size.fold_left |-> Slap.Size.iter_acc
etc.
Backward compatible changes
Perhaps some changes will be contained in ver 4.1 or above.
[x] Removing extra dynamic checks.
BLAS/LAPACK functions will be slightly faster.
-noassert option will be supported by the configure script.
[x] Introduction of generative existential types by GADTs.
More lightweight syntax can be used.
[ ] Dynamic checks of equalility/inequality of type-level sizes.
E.g., if_eq : 'n Size.t -> 'm Size.t -> (('n, 'm) eq -> 'a) -> (unit -> 'a) -> 'a
We plan to the following changes in the next major version up.
Backward incompatible changes
char
because BLAS/LAPACK's flags are characters. Overhead of conversion from polymorphic variant intochar
will be removed.)?up
(for symmetric or triangular matrices) isbool
in ver 3,[<
A |L |
U ] Slap.Common.uplo` in ver 4.?diag
(for unit or non-unit triangular matrices) is[
N |U ]
in ver 3,Slap.Common.diag
in ver 4.uplo
oflacpy
is[
L |U ] option
in ver 3,[<
A |L |
U ] Slap.Common.uplo` in ver 4.Slap.Common
, and'cnt_or_dsc
parameters of vectors and matrices will be changed.Slap.Common.trans
. ((('m, 'n, 'cnt_or_dsc) mat -> ('n, 'm, 'cnt_or_dsc) mat) trans
is too long since it has extra type parameter'cnt_or_dsc
.(m * 'n -> 'n * 'm) trans
is much simpler.)Slap.Common
and parameters~trans
will be changed.Slap.Size.pred_dyn
|->Slap.Size.pred
Slap.Size.fold_left
|->Slap.Size.iter_acc
Backward compatible changes
Perhaps some changes will be contained in ver 4.1 or above.
-noassert
option will be supported by theconfigure
script.if_eq : 'n Size.t -> 'm Size.t -> (('n, 'm) eq -> 'a) -> (unit -> 'a) -> 'a
cons
,hd
,tl
, etc.laswp
,lapmt
,gtsv