Here I include all of the things that, to the best of my knowledge and experience, should be changed/corrected.
[x] Typos and other minor issues:
[x] Instead of looping an branching → Instead of looping and branching
[x] to transform your data perhaps from → to transform your data, perhaps from
[x] we’ll explain what this means properly later → we'll explain properly what this means later
[x] The APL version turns the vector into a 2D array and sum-reduces → The APL version turns the vector into a 2D array, sum-reduces
[x] First step is to “trade depth for rank” - turn → First step is to “trade depth for rank” – turn
[x] and finally, pick the first value → And finally, pick the first value / Finally, pick the first value
[x] in other words something that → in other words, something that
[x] So what shape does a vector have → So, what shape does a vector have
[x] has two componens → has two components
[x] can also be used to re-shape data → can also be used to reshape data
[x] in for example Python → in, for example, Python
[x] thing that it’s worth → thing that is worth
[x] Strictly speaking, it's "the 'iota' primitive ⍳" or "the 'index generator' function ⍳", and not "the 'iota' function ⍳".
[x] In some places you write "2D" and, in others, "2-D"/"3-D"; I would suggest picking one and sticking with it
To consider
In here I include things that, from my point of view, would be nice additions/modifications. Tick them as you ponder on them, feel free to disregard.
[x] use inline code when talking about code
[x] the APL character array ‘hello world’ → the APL character array ‘hello world’
[x] matrix called m → matrix called m
[x] two arrows on the box for m, but only one arrow on the box for v → two arrows on the box for m, but only one arrow on the box for v
[x] it creates a vector 0 1 2 3 4 5 6 7 → it creates a vector 0 1 2 3 4 5 6 7
[x] when you write “Let’s ask Dyalog to give us a more verbose visualisation help first” and then turn boxing on, and rows, and whatnot, I feel the sentence is a bit awkward. I like how you are being nonchalant with all the incantations you are showing, I would just try to make the sentence simple, so that the readers feel safer more easily... Something like “Let's ask/configure Dyalog to produce more verbose outputs first” already feels "better" to me
[x] in the same place as the note above, I would remove the definition of assert, you don't use it in that chapter
[x] I would also consider not setting ⎕IO ← 0 in that same code box, because it makes it look like it has to do with the UCMDs to change session output when it has nothing to do with it; either change it later, or don't change it at all in this chapter (the chapter does use ⍳ here and there, so the outputs would become different)
[x] I find the paragraph
The shape vector now has two componens – as our matrix has two axes – the first axis, y, of length 3, and the second, x, of length 4. In other words, the shape of the shape tells us something about our array: its dimensionality, or its number of axes. If we instead take the length of the shape vector, we have its rank
a bit confusing. When you write "If we instead take the length ... we have its rank", it makes it look like the rank is not the dimensionality of the array, or its number of axes, which is the thing you just talked about. Sure, there's a difference between ⍴⍴ and ≢⍴, but I am sure you can put it across in a clearer way ;)
[x] I am not entirely sure I understood the target audience for this book; there are some things you explain with a lot of care, and other details you jump right over. For example, when you introduce ⍳, you say it creates consecutive integers “starting at the current index origin”, but you don't explain what that cryptic sentence means (this is related to the point above regarding setting ⎕IO ← 0)
Revision
Here I include all of the things that, to the best of my knowledge and experience, should be changed/corrected.
⍳
" or "the 'index generator' function⍳
", and not "the 'iota' function⍳
".To consider
In here I include things that, from my point of view, would be nice additions/modifications. Tick them as you ponder on them, feel free to disregard.
‘hello world’
m
m
, but only one arrow on the box forv
0 1 2 3 4 5 6 7
assert
, you don't use it in that chapter⎕IO ← 0
in that same code box, because it makes it look like it has to do with the UCMDs to change session output when it has nothing to do with it; either change it later, or don't change it at all in this chapter (the chapter does use⍳
here and there, so the outputs would become different)[x] I find the paragraph
a bit confusing. When you write "If we instead take the length ... we have its rank", it makes it look like the rank is not the dimensionality of the array, or its number of axes, which is the thing you just talked about. Sure, there's a difference between
⍴⍴
and≢⍴
, but I am sure you can put it across in a clearer way ;)⍳
, you say it creates consecutive integers “starting at the current index origin”, but you don't explain what that cryptic sentence means (this is related to the point above regarding setting⎕IO ← 0
)