I'm an experienced software engineer beginning to study APL, and in order to get a better feel for the language early on, I would like to understand why the language exposes to the coder the difference between scalars and vectors. As far as I can tell this far into my studies, this only limits flexibility without yielding any benefit to compensate for it. The result is APL code cluttered with otherwise-needless workarounds such as ravels, encloses, and discloses.
Since APL is such a bizarre and hard-to-read language, I'm building my own helper library in APL to make my own APL-ish interface, and getting away from using wonky "idioms" in raw APL to do everyday tasks. Before I build in abstraction of the scalar/vector distinction throughout my helper library, should I be aware of any utility I may be sacrificing by doing so?
Thanks!