slap
slap copied to clipboard
Revision plans for v4.0
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
charbecause BLAS/LAPACK's flags are characters. Overhead of conversion from polymorphic variant intocharwill be removed.)- The type of parameters
?up(for symmetric or triangular matrices) isboolin 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.diagin ver 4. - The type of parameter
uplooflacpyis[L |U ] optionin ver 3,[<A |L |U ] Slap.Common.uplo` in ver 4.
- The type of parameters
- [ ] 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_dscparameters of vectors and matrices will be changed.
- The types of flags in
- [x] Simplification of type parameters of
Slap.Common.trans. ((('m, 'n, 'cnt_or_dsc) mat -> ('n, 'm, 'cnt_or_dsc) mat) transis too long since it has extra type parameter'cnt_or_dsc.(m * 'n -> 'n * 'm) transis much simpler.)- The type of transpose flags in
Slap.Commonand parameters~transwill be changed.
- The type of transpose flags in
- [ ] 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.
-
-noassertoption will be supported by theconfigurescript.
- [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
- E.g.,
- [x] More utility functions:
cons,hd,tl, etc. - [ ] More LAPACK functions:
laswp,lapmt,gtsv - [ ] Sized array module.