@ab5tract Well, the functions themselves aren't first-class, but their Object Representations are. The method of applying objectified functions is obscure, and the whole thing is awkward to use. But can it be done? Yes.
@Adám ah, ok.. I read Object Representation and imagined it was whatever "wrapping" got added around the functions when they became usable from other .Net languages
gotcha :)
@Adám You are most welcome! I have to admit a general distaste for the kind of holier-than-thou attitudes that tend to crop up amongst talented golf hackers. It makes asking questions less comfortable all around because the general arrogance level of the atmosphere is really high
It also gets really tiring to read how ignorant younger programmers are to past constraints (you know, such as being one of the very first programming languages ever designed.. that's only conceptual/cultural constraint, let alone technical!)
hubris is one of the programmer's virtues, but it must be tempered with the other virtue of humility
@ab5tract I think it is a general problem with those ignorant of history/taking today for granted.
I was blessed with a father much older than me, who could imbue in me a sense of what the world was like before.
Imagine not having plastics (thought experiement: all thermoplastics and polycarbonates suddently disappear…) and sharing a phone line with two other families (never mind having to book out-of-town calls in advance).
@ab5tract One thing I was told when I joined Dyalog was: Write your code as if it will be read by a violent psychopath that knows where you live.
@Adám This is a very common refrain amongst Perl programmers too. Useful to keep in mind lest one get too clever for one's own (or the code's) good
That exact phrasing "a violent psychopath that knows where you live" was the second-most common idiomatic developer wisdom at Booking.com when I first joined in 2012
The other was, "if you haven't broken prod yet, you might not be working hard enough"
@Adám I haven't been in a position to apply yet (too many balls in the air in $life atm) but reading the job description page it really felt like the dev position was written for my mindset personally
Which was one of the biggest frustrations about the constant APL bashing.. I joined this community specifically because I am compelled by the rich, almost "alternative" history of computing that APL reoresents
@Adám At Booking.com I was using Perl extensively/exclusively until I switched to Java to help work on our SIEM
Historically, picking up languages and learning to use them idomatically has been one of my strongest capabilities. One a less extreme scale, it plays out similarly on a framework/library/problem domain level (that is, I'm a quick study)
From a personal standpoint, I usually use Raku for any general scripting I need because it has literally every programming paradigm all glued into a cohesive whole. This allows me to approach the task in whatever way I'm feeling like that day.
@Adám I was looking at the APL position, but maybe this has closed?
I would definitely switch to C if it meant learning from programming elders
It turns out that Perl refs are more or less used how pointers are, so i have that conceptual foundation. C was my first language but as soon as I found Perl I could not be bothered with C's string processing "capabilities"
@Bubbler oh man, it wasn't entirely pleasant... That said, I get to "learn" Java at versions that allow me to do something like the functional list processing (map/grep), Though the modern "Java" is so heavily bootstrapped with metaprogramming/pre-compiler tools like Spring that it is sometimes hard to pick apart what layer of the cake I'm really studying
@Bubbler If I had stayed in Core Infra as an SRE instead of switching to security, I might have gone from Perl to Go. Honestly, though it is sexier from a resumer/payscale PoV, I'm not sure that I would have enjoyed that transition either.
That said, it was the awkwardness/frustrations of Java that led me to find APL/array programming "in its own right" (I had heard of them but never understood the utility). It all came from trying to find some form of distributed search/time series not based on Lucene/Elastic Search and coming up entirely short until I found Kx
If it were up to me, we would be using kdb+ for sure. But once I saw how powerful K was, it was only a matter of time until my love of typography, symbolic thought, and secret occult sigils led me to study APL :)
@ab5tract I don't think being anti-anti-APL is much better than being anti-APL. (and of course, everyone's gonna be happy with their opposition leaving; it's just not a healthy way to do things)
(and to this day i have no clue what's meant to be achieved by saying "but X was awesome in the past!" except if you're talking to a histologist or something. Like, yeah, APL was awesome for its time, but so were many, many, many things. This line of thinking is literally prohibiting innovation)
@ab5tract There was a problem in that this room was described as something for all array languages, to the point of suppressing alternatives that would really treat them as equally valid topics. In practice it's now a Dyalog support forum. Which is fine, but a lot narrower.
@Marshall Not sure what you mean by "suppressing alternatives that would really treat them as equally valid topics".
@Marshall No, it really isn't a Dyalog support forum. Discussions of KAP design, and dzaima/APL support questions are requent too. As are discussions about J and comparisons between APL-like languages.
I don't think it's entirely about age. Most APL programmers left it eventually for various reasons. The remaining community has a lot of people who just shut themselves off to new things, because those people were much more likely to stay.
@Adám Is that just a magical property of a dop that the left (or any?) operand can be the object representation of a function rather than a function? Is that a documented feature?
@PaulMansour It wasn't intentionally added so it's more of an implementation quirk. The representation of an OR is basically just a function with a bit set; in some contexts the interpreter doesn't distinguish it from a function.
Dyalog APL allows assigning a vector of multiple values to a corresponding number of multiple not yet defined variables:
x y←1 2
]display x
1
]display y
2
How to assign a single value from a single-element vector to a single not yet defined variable?
What I tried:
(...