TODO 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. (newra) -*- mode: org; -*-
  2. Help: [C-uc .] insert timestamp [C-cc] flip checkbox [C-uucc] partial flip checkbox [C-ct] flip TODO.
  3. * TODO bugs [5/8]
  4. * [X] (call-with-input-string "#3()" read) vs (call-with-input-string "#%3()" read)
  5. * [X] reader loses type when reading rank 0 arrays
  6. * [X] ra-equal? errors out with mismatched shapes
  7. * [X] zero lengths break ra-format
  8. * [X] (ra-dimensions (ra-iota))
  9. * [ ] ra-slice-for-each shouldn't return anything
  10. * [ ] (ra-from (list->ra 2 '((a b c) (x y z))) 1 1) => #%0(y) contradicts doc
  11. * [ ] docstrings don't work for define-inlinable-case
  12. * TODO documentation [1/1]
  13. * [X] actually explain rank extension / prefix matching in the manual
  14. * TODO compatibility with existing Guile arrays [8/9]
  15. * [X] ra-slice-for-each ra-map! ra-for-each ra-cell ra-ref ra-set!
  16. * [X] ra-transpose ra-reverse
  17. * [X] make-ra make-ra-shared ra->list list->ra list->typed-ra
  18. * [X] ra-iota ra-i
  19. * [X] ra-index-map!
  20. * [X] ra-shape ra-dimensions
  21. * [X] ra-root ra-offset
  22. * [X] ra-equal?
  23. * [ ] root vectors are equivalent to rank-1 newra objects
  24. * [ ] return roots for trivial rank-1 views on roots
  25. * TODO whole array functions [8/15]
  26. * [X] ra-fold
  27. * [X] ra-any ra-every
  28. * [X] raw prefix matching
  29. * [X] generalized prefix matching
  30. * [-] high level slicing [3/4]
  31. - [X] ra-from
  32. - [X] ra-amend!
  33. - [X] (ldots)
  34. - [ ] axis insertion (?)
  35. * [X] ra-ravel
  36. - [X] (ra-ravel a [n])
  37. - [X] (ra-order-c? a [n [org]])
  38. - [X] (ra-ravel a [n [org]])
  39. * [X] ra-tile [2/2]
  40. - [X] accept arbitrary axis
  41. - [X] can produce dead axes
  42. * [X] ra-cat (ra-cat, ra-scat)
  43. - [X] implementation
  44. - [X] tests
  45. - [X] tests with non-zero base indices
  46. * [-] ra-reshape [2/3]
  47. - [X] basic function
  48. - [X] accept arbitrary axis
  49. - [ ] placeholder
  50. * [X] ra-clip
  51. * [ ] ra-grade
  52. * [-] ra-rotate [1/2]
  53. - [X] ra-rotate!
  54. - [ ] ra-rotate
  55. * [ ] as-ra
  56. * [ ] ra-filter, ra-select, etc.
  57. * [ ] ra-affine map that explicitly takes an [M×(N+1)] matrix
  58. * TODO misc array manipulation [0/1]
  59. * [ ] mapping of indices (beyond ra-reshape/ra-from). Maybe just explain in manual?
  60. * TODO fundamental features [3/7]
  61. * [X] unsized index vectors
  62. * [X] tensor indices
  63. * [X] broadcasting
  64. * [ ] ways to control iteration (in order, dim loop order, direction, etc.)
  65. * [ ] a solution for (ra-amend! dst (RA-MAP OP (ra-from dst i ...)) i ...). Lenses?
  66. * TODO ra the array language [/]
  67. * [ ] drag-along facility / lazy ops
  68. - [ ] verbs
  69. - [ ] rank conjunction
  70. - [ ] each (cf array-curry in srfi-179 or the old Guile array-enclose).
  71. * [ ] output types
  72. * TODO performance [0/4]
  73. * [ ] u8 ra-fill! vs native (see bench.scm)
  74. * [ ] f64 ra-copy! vs native (see bench.scm)
  75. * [ ] ra-ref / ra-set! with 1 or 2 args vs built-in array-ref / array-set!
  76. * [ ] ra->list / list->ra vs built-in array->list / list->array. Maybe those can be reused?
  77. * TODO friendlier undefined sizes [2/6]
  78. * [X] printing of 'd typed arrays
  79. * [X] printing with dead axes
  80. * [ ] reading of 'd typed arrays
  81. * [ ] printing with infinite axes
  82. * [ ] reading of arrays with inf axes
  83. * [ ] reading of arrays with dead axes
  84. * TODO quality of life [2/9]
  85. * [X] rank-1 (or higher!) cases in the unrolled section (e.g. bytevector-copy!, bytevector-fill!).
  86. * [ ] rank-1 (or higher!) cases for generating functions (e.g. array->list).
  87. * [ ] the reverse of ra-singletonize, find a good name (see 'differences with numpy' in the doc).
  88. * [ ] make (set! (ra ...) o) work with slices just (ra ...).
  89. * [ ] refactor macros
  90. * [ ] bench tracking
  91. * [ ] move struct defs to (newra types)
  92. * [X] parameters to control print format (eg print sizes/strides, truncate...)
  93. - [X] CL/SRFI-163 style rank-0 (e.g. '#0 x' instead of '#0(x)').
  94. - [X] print sizes in prefix
  95. - [X] pretty-print
  96. * [-] pretty printer
  97. - [X] basic ra-format
  98. - [X] compact mode
  99. - [ ] handle unbounded axes
  100. - [ ] auto truncation
  101. * TODO other [0/1]
  102. * [ ] review definition of (ra-untranspose a i ...). Does it make sense to allow any i < (rank a) ?
  103. * TODO replace Guile arrays [0/5]
  104. * [ ] truncated-print support
  105. * [ ] equal? support
  106. * [ ] hooks into C / libguile
  107. * [ ] compilation of literals
  108. * [ ] replace all names