@1234 Yes, p1 and p2 (which you should use to create v12!) are scalars instead of vectors because you've not disclosed them from ⍵. This works:
ptToLine←{
⎕IO←1
p0←⍺
p1←1⊃⍵
p2←2⊃⍵
⍝ vector p1 to p2
v12←p2-p1
⍝ unit vector of v12
u12←v12÷(0.5*⍨+/v12*2)
⍝ form a project matrix = u12 u12^t
m←u12∘.×u12
m
}
@1234 The shape of an indexing operation is the same as the shape of the indexer, so ⍵[1] must be scalar just as 1 is a scalar. To keep 0 0 0 a scalar, it is enclosed, so you get ⊂0 0 0. You can see a hint at that by there being a leading space on the 0 0 0 line. Turn ]box on to make it clearer. That said, you can use (p1 p2)←⍵ and that will disclose the elements correctly.
is there a better reference for apl#? only thing i could find is a table (pages 9 and 10) without descriptions
(were the other glpyhs eventually implemented, or not? if not, should I still include them? probably yes, I guess, since I include things from N2k that don't seem to actually exist)
if i add apl# there's a bunch of stuff i'd have to guess. ⍳-nested? yeah probably was supported but who knows! or maybe it wasn't supported, but it was intended, so i should have it anyways...
wonder what "$ String" does
nevermind, it's explained below
> Note: $ is a primitive function for converting character arrays to strings. Format can be used to convert a string to a character vector
guess apl# has scalar strings?
oh yeah, it's explained above
> String A string is a simple scalar that represents an ordered sequence of Unicode characters
yeah, there's a lot of "will contain"s in the document
forgot to ask, are any of the releases publicly (and freely) available?
you've been really helpful throughout the project, pointing out mistakes, suggesting changes, pointing me, giving me documentation i coudln't have otherwise access to, ...
I would do SAX for SHARP, at least to start with. The documentation link there should work. It's hard to find information on IPSA's SHARP: what I added to the APL Wiki about 1987 involves some guesswork. But I don't see why the current omnibar design would have problems with SHARP or A+. Wasn't the issue before just that they would break up "common APL" too much?
And as far as I can tell it includes all the glyphs from SHARP at the time (there's a list in table 4, albeit in a weird order, and the Jsoftware version has a handy clickable table at the bottom left).
And yeah, regarding APL# I don't think it's a great addition given that it never got past the prototype stage and also the design focused on things other than the primitives.
@RubenVerg NARS (not 2000) is historically interesting. The manual focuses on new primitives, but it looks like it does list all of them other than scalar functions, which are presumably the same as APL.SV.
okay the documentation being somewhat good is definitely a point in favor of adding an iverson notation, but I'm still not convinced that it belongs in omnibar
it's definitely interesting though!
also there's a lot of subscripts and similar that idk how to represent
(well, I guess Iverson notation should be TeX and not Unicode, but that's also another dependency)
yeah I really don't know if I should include it or not
I don't think Iverson notation is really APL. It's got so many conventions that were discarded, like writing one function on top of another for inner product, implicit subscript for index origin, four different arrows placed on top to flip in various directions...
IVSYS is closer to APL, and some of the stuff there like n ⍺ j for a prefix vector even made it into APL\360 for a short time. Still wouldn't include it personally but at least it would fit.
Having the same ⊥y as Extended Dyalog 53 years earlier is pretty funny though.
Yes, but it's never indicated that it's part of the language, and it says "Since number bases other than two will be used but rarely in the present chapter, the elided form ..." which suggests it's a subject-specific extension.