it's like in that old joke: a man walks into a shop and asks “you don't have any meat?” - “no, here we don't have any fish. the shop that doesn't have any meat is across the street"
seriously speaking, 'WORD'[⍬] is an empty array of characters, you can test that by doing ⊃'WORD'[⍬], which gives a space - the "default character"
@TessellatingHeckler the first item of the empty array, here that being the prototype. You can think of empty arrays as secretly having a single element in them, inaccessible by many things.
@TessellatingHeckler the usual reasoning is that it gives some default cases, i.e. if you've got an array of equal length arrays, if the outer arrays length is 0 it might still be good to know what would've been the size of the inner arrays. imo it just brings way too much unnecessary complexity
@TessellatingHeckler i'd think what's usually said is that APL doesn't have a static type system, as APL definitely has an overly annoying dynamic type system (well, as far as the distinction between variables of functions, arrays & operators is concerned, which is none, until you're just away from executing a line and everything goes wrong)
@TessellatingHeckler god that's a confusing sentence, but that definition should include that numbers are converted to 0s and chars to spaces (and other types result in nonce errors:)