@Bubbler put this at the top of a file, edit it with your favourite editor, and run it with ./filename.dyalog. i don't see what could be simpler.
files are for storing stuff, editors are for editing, interpreters are for interpreting. if you're editing in the interpreter and not storing it in a file, you're doing it wrong :)
i added another type of quoting, which also expands my builtins, for convience
is there a way to quickly clear APL console? i'm like 50000-lines into it and i had to remove some random files from a random directory to get rid of them
and when i want to scroll back to something then i can't find that
To me, the best way to remove session logs is to run Dyalog in Gitpod. The container always starts with a fresh state (other than the workspace directory), so you don't need to worry about temp files or stray logs or anything.
Maybe this is why I didn't think about session logs in the first place
@Adám It loses the catchiness/memorability just enough to annoy me then - I can't fully explain why, but seeds has the connotation of hope and potential, whereas seedlings are more like delicate things that have to be tip-toed around and coddled. APL Sprouts?
@KamilaSzewczyk Is that not the mythos surrounding APL? The APL Wizards and the original Mage, Iverson. The Dark Lord Whitney, etc.?
@Adám It's true that remote meetups could be grouped into larger geographical areas (or, as you say, timezone based), but I think the appeal of national or city based ones is that you go somewhere close to you and meet people in person. (Once COVID restrictions are gone, yadda yadda)
@MartinJaniczek Also, in the smaller meetups it's more comfortable speaking your native language if all the attendants speak it - no need to use English that way
yes, the first expression is the one which iterates the stream, so this is the one where the bound of 100 is applied, the rest are filter/map/each operations, where only the each is terminal
⍨ is an operator, and operators don't make sense when placed at the beginning of the expression, so i used them to mark if something is a filter or not.
I may also add a collect terminal operation, which will make an APL array of everything that has got it's way to delivery, taking at most ⍵ elements from the stream
when i'm saying terminal or nonterminal, i mean that a terminal operation will loop forever if an infinite stream is passed, and when i say nonterminal, i mean an operation which will never loop in case of an infinite stream
Why not allow the left element to be a vector, where the last element of that vector is the first to be processed, and elements to its left are default start values? The length of the vector would specify how many elements should be accessible.
`Stream.iterate(new long[] { 1, 1 }, p -> new long[] { p[1], p[0] + p[1] }).limit(92).forEach(p -> System.out.println(p[0]));` again, java equivalent, but I don't have `limit` and working on tuples may be hard.
oh, i forgot markdown doesn't work
sorry
@Adám i think that if it'd be users duty to keep the sliding window, the solution would be better. in the next map step, you can remove all elements except the first one, so there's virtually little to no overhead
APL seems really flexible and suited for this task, so you can swap between tuples and scalars as you please, maybe even nondeterministically
so far my roadmap is making a better limit statement, somehow. Is there a good way of detecting types and arities in APL?
so far my code is full of this and it smells, a bit
@RikedyP No, that's fine. In fact I'll remove Seeds from the APL Wiki since it's not particularly noteworthy, and is linked from BQN's implementation docs anyway.
@xpqz ⍤ only clicked yesterday or so, for me, and because of my toy implementation of APL. I wrote some code to deal with cells of arbitrary dimension and THEN I understood
@RGS yeah, ⍤ is an operator that's a complete mystery until you actually use it (or much better, implement it), at which point it's just completely obvious
@ngn Yeah, and for the same reason, I'm strongly proposing the addition of a Depth operator (which is what AW would add to K, if anything), even though we already have ¨, so you don't have to write things like ¨¨¨.
Tradfns (while maybe state-of-the-art in 1960) have multiple issues: Dynamic scoping, global assignment by default, cannot be nested, know their name. But afaik, with those things in mind, they have no gotchas.
@ngn fwiw that's exactly how i feel about tradfns (and also many if not most other things). Is it stupid they have all of those horrible things? Absolutely. Does that make them literally unusable in every case ever? not really
@ngn from what I've seen he doesn't encourage the use of tradfns to newbies, and as for ⎕IO, I think it does make sense to mention it later, but mentioning 'oh by the way you can change ⎕IO' after someone's already done the very basics, seems fine
'learn APL! it's great... apart from the tradfns... and the IO... and oh no please don't mention ML....' worst salespitch ever!
Well if you believe a great product will sell itself, and that a product is not great unless it is perfect, then this is the wrong world to be livin' in
as opposed to other languages where it might be only much later on when you learn it has some crippling flaw that makes it completely unusable for what you want to do
@ngn what's "serious" heavily depends on many things. dfns already exist as mostly a replacement for tradfns, and one pretty much never needs to "worry" about ⎕IO - you just choose one value and stick with it
@RikedyP some flaws are fundamental, though: ⎕IO will hit you pretty much no matter what you want to do. Dynamic scope less so, but is still pretty pervasive (or as ngn would put it: perverse).
@ngn But what is the alternative then? I thought we were talking about whether one would introduce something to someone by listing its major flaws (i.e. reasons not to use it)? But if it is all that is available then it has a massive advantage over the perfect thing which doesn't exist
@Adám It also seems appropriate to bring those things up as they become relevant, which is what you normally do AFAICT, rather than going "wanna learn APL? btw here is a list of things that will bite you in the butt"
@ngn Since you wrongly accused Dyalog of dishonesty when it came to the handling of a for-fun competition, I feel compelled to complain about your dishonesty here. In public, you made claims about me that were provably false. Is that not dishonest?
@ngn If you read through the chat log here, I think you'll find multiple occurrences of me criticising Dyalog on all kinds of things: business decisions, management, language design, priorities. Please stop with your false claims.
@Adám you're making this sound personal. i don't decide that. it's the natural thing to do if you want to show that you did have good intentions after a 3year delay, and forgetting 4 times about it was an accident.
@ngn how much does it really matter who won a code golf thing with no prizes... the student competition thing I agree with but that thing seems like a non issue
@Adám by "derived" here i mean something followed by an adverb, like +/ or #:' or "delimiter"\ - those are verbs. square-bracket notation always produces nouns.
(just to remind: "verb" and "noun" are concepts meaningful only in parsing)
@ngn I think what you end up doing here is punishing actions that lead to building a strong community (because making some errors of some kind is inevitable). It's a common theme in various efforts these days that doing something is punishable but doing nothing isn't, so nobody does the dead obvious good things they should.
But I don't think it was fair for @Adám to drag that issue up either.
@Marshall i'm trying to decode that.. are you talking about adam not criticizing apl in lessons? or about competitions not publishing winning solutions?
@ngn Well, that's just not enough tolerance to build a community (or at least, you will end up relying on other people being more tolerant than you). Sometimes people are wrong and won't correct themselves.
I have this problem with APL Wiki: a lot of the time I don't like the way people added certain information—formatting or neutrality or something. I have to remember that they did improve the Wiki and I want them to keep doing it.
@ngn there were 2 mistakes here at play - 1) initial wrong scoring; 2) forgetting to fix it after multiple reminders. You equated those two mistakes as being dishonest. I see the reasoning behind it, but, assuming Adám didn't outright lie about what happened, it isn't really dishonest or willful
@Adám it's only a large amount of work because of the decisions that lead to it being a large amount of work, if the system had been designed to make solutions available from the beginning, it wouldn't be any work at all!
@rak1507 True, and if we had written an automated system to collect submissions (as we much later did with the big competition) then this could be automated, but that event was done entirely through emails to a single person, with no standardised format for submissions (even Excel files were allowed!) so I think it is reasonable to assume that it is a lot of work to fix now.
@ngn unless there's some legal blob not mentioned in the challenge page, dyalog didn't even reserve the right to publish others' solutions. (though i don't think you'd go as far as to request them to upload the solutions, and sue them for copyright infringement :) )