« first day (1456 days earlier)      last day (1199 days later) » 
01:00 - 16:0016:00 - 00:00

1:25 AM
I was reading the very unrelated to APL haskell.org/onlinereport/haskell2010/haskellli2.html#x3-5000 , and I was surprised to see APL as one of the "forerunners" of haskell (At the bottom of the report)
 
 
4 hours later…
ngn
5:28 AM
@Marshall FP mentioned in ^ right after APL :)
 
ngn
5:39 AM
@Adám someone called Corydon Palmer, apparently
 
6:35 AM
@ngn No, that only accounts for the floor/ceiling-type symbols. No mention of the much more distinct grade and ⍕/⍎-like symbols etc.
 
ngn
@Adám i checked some of the sources but couldn't find a mention of them either
they were dumped into unicode from a pre-existing japanese encoding
 
@ngn Source?
 
ngn
the most interesting part - the "rationale" - is missing
but i hope you don't seriously think this might have anything to do with apl :)
 
7:25 AM
i think i have accidentally segfaulted dyalog apl
during trying to debug my program
 
Image not found
@Adám ^^
 
how about now?
i'll try to reproduce it
and my workspace session wasn't saved :c
 
Shows fine
 
@KamilaSzewczyk )copy aplcore (at the home directory) might do stuff
 
i was smart enough for once to keep my code in clipboard
 
7:30 AM
The usual practice is regularly saving the source code file, which doesn't work well in APL (at least without extra tools)
 
<moon-child> @KamilaSzewczyk nice domain
 
thanks
 
ngn
@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 :)
 
points at Windows
 
8:19 AM
I've got a random segfault again
i copied over my program, and when i came back to RIDE, it crashed
 
8:32 AM
@KamilaSzewczyk If you can, please email support@ describing how you did it, and attach the zipped aplcore (it compresses well).
 
@Adám done
 
Thank you.
@KamilaSzewczyk Btw, if you use Link to keep your source in text files, the files get automatically saved from the Editor.
 
9:30 AM
apl extensions devlog: ¦"?10""⍨2|⍵""⎕←⍵" rolls random numbers infinitely and prints them if they're odd
 
@KamilaSzewczyk What is "?
 
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
 
@KamilaSzewczyk Do you just want a clean screen or actually to discard history?
 
i want to discard the history, because i like scrolling back to important stuff
and 50000 lines make it impossible without perfect precision
 
That's discarding history selectively, which is a totally different beast from discarding whole history
and I'm not aware of any system that supports it
 
9:37 AM
oh i don't care about stuff i already have, for now
i just want clear history
 
@Bubbler On Windows, I regularly remove specific/selected lines of the history. I just don't think RIDE or the protocol supports that.
@KamilaSzewczyk I suggest logging an issue against RIDE asking for a way to clear the session log.
 
i can write a bash script for that because i already know where logs are stored
 
@Adám That would be sweet. I tend to remove the file manually all the time.
 
@KamilaSzewczyk Sure, but that wouldn't benefit others…
 
9:41 AM
I didn't even think of using session log that way
 
that's the thing i use, if someone needs it: sh -c "rm -f /home/username/.dyalog/*.dlf"
 
sorry for my bash noob question but why is that wrapped in sh -c?
 
@rak1507 an oddity of my desktop environment, it doesn't work without it :p
 
Ah
 
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
 
10:19 AM
@Marshall would you be annoyed if I stole the name APL Seeds for an event targeted at APL newcomers this spring?
 
RGS
@RikedyP The name sounds good! :P
 
11:04 AM
@RikedyP APL seedlings?
APL seedlings grow in the APL orchard…
 
apl lore!
 
@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.?
 
'The Dark Lord Whitney' lol
 
dark lord whitney lmao
the apl community seems really tight
 
APL Master Iverson (a.k.a. Old Ken) and Darth Whitney?
 
11:09 AM
@Adám The watchful eye of Disney's lawyers intensifies
 
i think we could fit every more or less important for APL person in a single website
which is under <20K
 
why no polish user group >.<
 
@Adám LOL
 
11:10 AM
also is it just me or apl.wiki is ded
and aplcart too
 
@KamilaSzewczyk no Czech group either (but yeah I'd have higher hopes for PL to have one than for CZ)
 
@RikedyP Just call it New APLers.
 
just you @KamilaSzewczyk
 
@Adám Yeah alright
 
Especially these days, what's the point of national user groups?
 
11:14 AM
true
 
i can access everything, except aplcart and apl wiki, for some reason
i just get server not found
 
I can see the point of time zone-based user groups, but 3 or so should be enough: The Americas, European/African/West-Asian, Pacific
Can you access github.io pages? what about aplwiki.com?
 
yep, other github,io pages work, and aplwiki.com also works
 
how about abrudz.github.io/aplcart?
 
i have no clue what happened, but https://abrudz.github.io/ works, and clicking on aplcart gives me server not found
oh, i know why
 
11:17 AM
Sounds like you have a DNS problem.
 
you made a redirect
to aplcart.info
hmmmmm
 
Not so much me, as GitHub having done that.
And the apl.wiki→aplwiki.com/wiki redirect was done by my domain provider.
 
okay, i changed my nameserver in /etc/resolv.conf to 1.1.1.1
and now everything works
i have no clue what happened
 
lol, sharing code is the only one without a page
 
11:38 AM
@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
 
@MartinJaniczek yeah although that relies on most people being within a short distance from where the meetup is
 
@MartinJaniczek True. I used to attend the BAA meetings at a London pub. Certainly cosy.
 
11:59 AM
5 100¦"⍵×2 → ⍵+1 → ⎕←⍵" hows the syntax?
this displays 6 11 21 41 81
spaces around are optional
changing it to 5¦"⍵×2 → ⍵+1 → ⎕←⍵" makes it infinite*
 
@KamilaSzewczyk So this means repeat the process until 100 is reached?
No wait, 5 is the number of iterations. What is 100?
 
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
5 is the starting "thing"
 
But 5×2 then +1 should give 11, no?
 
no, the first iterator expression doesn't apply for the first number
 
Huh.
 
12:06 PM
n -> n * 2 -> n * 2 * 2
|       |       |
n+1       n*2+1   n*2*2+1
the formatting is probably scuffed but
this was the initial idea
maps go downwards, the iterator goes sideways
maps and filters can be chained and a filter can "break" a bond, so that the following maps and eaches are not executed
this should work with any data type, but the limit works only for strings
 
You lost me. Probably not your fault, as I'm in the middle of a bunch of things.
 
maybe i could remove this left parameter to ¦ and replace it with some operation which, upon failing, stops all the operations on the stream
because i use the > operator which will fail on everything not being a number
i can't edit the old message so here comes a new one:
5  ->  5 * 2  ->  5 * 2 * 2  -> ... -> 5 * 2 [...] * 2 (limit of 100 exceeds here)
|      |          |                    |
5+1    5*2+1      5*2*2+1              5*2[...]*2
|      |          |                    |
⎕←5+1  ⎕←5*2+1    ⎕←5*2*2+1            ⎕←5*2[...]*2
(an explanation of how that program above actually works)
 
Up until the first is the formula for the next step. The next segment is pre-processing for delivery, and the last segment is the delivery?
But I still don't get 100. How does it know to imply >?
 
2=≢⍺:⍺ lim (⍵,'⍵'), then lim←{max←⊃⌽⍺ ⋄ (⊃⍺){⍺>max:0 ⋄ 1 [...]
it's a really hacky way of making finite streams i came up with for now
@Adám kind of. there can be multiple preprocessing steps.
and the preprocessing step can also filter out results, so that it doesn't actually get to the delivery
for example: 5 100¦"⍵×2→⍨1=?2→⍵+1→⎕←⍵"
this will randomly remove elements so that they don't pass to later preprocessing/delivery stages
so it sometimes prints nothing, sometimes the full sequence, sometimes 6 11 21 41, etc...
 
→⍨?
 
12:19 PM
the main problem here is that i need some sort of a halting condition to the first iteration step
 
continue:
 
@Adám just splits these stages, in all contexts, ignoring operators.
 
So what does do?
 
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 is the delivery ⎕← and not just ?
 
12:22 PM
i didn't implement collection, yet
it's a bit of a prototype for now, but i'm so far gathering ideas
 
Ah, so it literally outputs?
 
How would you make the next step depend on the previous one(s), say to generate an infinite Fibonacci series?
 
@Adám that's the duty of the iterator
unfortunately for now i don't allow taking multiple previous elements, only one :/
you could probably do some tuple magic here
i think multiple previous elements is a bad idea, mostly for functional use cases we'd make a stream of tuples
 
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.
 
12:26 PM
`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
 
Wait, you're implementing this in APL?
 
for now, yes
 
Cool.
 
1:00 PM
@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.
 
@Marshall Don't forget to update the APL Orchard article too.
Do you actually link to the conversation bookmarks from the BQN docs?
 
@Adám I think so. Links are here.
 
OK.
 
1:31 PM
how does one effectively manage scopes? say, for example: {{x←2⋄{x←4}⍵⋄/* i want x=4 here */}⍵⋄/* i don't want x to be accessible here */}
i could pass around x as a parameter, but this seems painful
 
@KamilaSzewczyk you can do x⊢←4
 
and the criterion about x being not accessible is still fulfilled, right?
 
@KamilaSzewczyk yeah. Modified assignment modifies the variable in the closest scope where the variable was defined
 
understood, thanks
 
@KamilaSzewczyk I'll add some keywords to APLcart.
 
1:43 PM
well, it doesn't update a global variable
 
It updates something that is global to it.
 
how would you modify a truly global variable then?
 
@code_report you suggested an event for new APLers, do you have any topics you'd be eager to see discussed / showcased at such an event?
 
@rak1507 You (almost) can't, if it is shadowed.
 
what if it isn't?
oh, weird
 
1:45 PM
Then it will do true global.
 
it's like it finds the first definition of that name going up the scopes
 
@rak1507 What is?
@rak1507 Not first definition, but first allocation.
 
2:00 PM
Just a heads up to anyone interested, I got no response whatsoever from the CS department at U of Alberta re: an archive of Keith Smillie's webpage :(
Pretty sad to think that a faculty member's output would be treated so poorly/trivially/cavalierly
 
Historians will have real issues with our times.
What happens to software owned by a company that is dissolved?
 
2:17 PM
Reading back some old cultivation sessions. @Adám at some stage said '⍤ really isn't very complicated'. This made me look at my shoes in shame.
:)
 
@xpqz I'm sorry to have caused you discomfort.
 
Nah, just kidding.
There is a wealth of know-how in those session transcripts.
Although from a personal perspective, ⍤ has been the hardest operator to grok.
 
@ab5tract that's a real shame
 
ngn
@xpqz according to the same source, "having to always specify depth" in k, i.e. using each, eachleft, eachright, is complicated :)
 
My k-fu is too weak sauce to understand that...
 
ngn
2:24 PM
i suspect if whitney had kept ⍤ in k and dyalog had adopted /: and \: he would be claiming it the other way round
@xpqz well.. i can't offer formal lessons, unfortunately. i can only help as a programmer helps a programmer
 
Eachleft takes an array to the left and a function to the right?
 
@ngn Why are you assuming ill-will on my side?
 
RGS
@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
 
@xpqz eachleft/eachright are just {⍺ ⍺⍺¨⊂⍵} and {(⊂⍺) ⍺⍺¨ ⍵}
 
ngn
@xpqz no, two arrays. it's like ⍺f¨⊂⍵ (if rank was depth)
 
2:28 PM
@ngn "if rank was depth" ― What?
 
@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
@Adám just following the money - it's your job to make it look like that :)
 
@ngn So you say that from your experience with me, I won't criticise aspects of Dyalog APL?
 
⋄ 1 2 3,⍤0 1 ⊢ 'hello'
 
@xpqz
┌→──────┐
↓1 hello│
│2 hello│
│3 hello│
└+──────┘
 
2:29 PM
@dzaima most of the time I use rank I either think I know what I'm doing and it fails, or I don't know what I'm doing but it works!
3
 
That makes sense. rank 0 to the left and rank 1 to the right.
 
ngn
@Adám ok, never mind about depth vs rank..
 
@xpqz Exactly. That is the only thing it does (well, and a mix, but hey…)
 
@ngn I don't even see Adám saying anything's complicated there (especially not specifically eachleft/eachright)
 
@rak1507 that's a good summary!
 
2:32 PM
( is definitely more complicated than eachleft/eachright, but that's because it does much more (as in, potentially infinitely more))
 
ngn
@dzaima see my response and his "you're entitled to your opinion"
@dzaima and we're talking about (potentially) multiple eachlefts,etc
 
Helper functions: ⊂⍤k for monadic and ,⍥⊂⍤j k for dyadic
 
ngn
@Adám ^^that's was what you meant, wasn't it?
 
@RikedyP Not ⊂⍤,⍥⊂ for dyadic?
 
@Adám Actually I'm looking at multiple rank now
 
2:36 PM
@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 ¨¨¨.
 
ngn
@Adám criticise - only superficially. you don't even criticise obvious warts like ⎕io or tradfns' dynamic scoping
 
yes he does
 
⋄ (↑'one' 'two' 'three')(⊂⍤,⍥⊂⍤1⍤1 99)↑'two ' 'three'
 
@RikedyP Now you're just showing off.
rank-rank?
 
RGS
2:39 PM
@RikedyP editing messages doesn't edit the code replies
 
@RGS didn't meant to edit
⋄ (↑'one' 'two' 'three')(=⍤1⍤1 99)↑'two ' 'three'
 
@RikedyP
┌┌→────────┐
↓↓0 0 0 1 1│
││0 0 0 0 0│
││         │
││1 1 1 1 1│
││1 0 0 0 0│
││         │
││1 0 0 0 0│
││1 1 1 1 1│
└└~────────┘
 
Dec 29 '20 at 17:23, by Adám
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.
 
@xpqz I used double rank once and I felt like a god
2
 
ngn
@rak1507 @Adám is that your official stance? :)
 
2:40 PM
@rak1507 :D :D that made me laugh
 
@ngn Absolutely.
 
@xpqz Rank always pairs arguments - so ⊂⍤,⍥⊂ shows which cells actually get paired - then you substitute with your desired function
 
@xpqz ... and then I realised it was simply ¨ or something like that (I can't remember the exact details)
 
The above is just a type of outer product by the way
⋄ 'one' 'two' 'three' ∘.(,⍥⊂) 'two' 'three'
 
2:42 PM
Looks like I'll need to work on rikedyp.uk/APLWorkshop/course/6 though
 
↑⍤(∘.=⍥↓)
 
ngn
@Adám that sounds like, "apart from a bit of genocide, child abuse, and war crimes, he's a good guy" :)
 
Or ∘.=under↓ ?
↑∘.=⍥↓ has a nice symmetry
 
@ngn sounds like he's saying they're consistent (even if consistently bad) to me
 
@ngn Take it as you want, but "you don't even criticise obvious warts like ⎕io or tradfns' dynamic scoping" is blatantly wrong.
 
ngn
2:45 PM
@Adám so are you going to mention how bad they are in your next lesson?
 
@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 I feel like you're too harsh, someone doesn't have to constantly slate every bad feature about something to be critical of it
 
ngn
@dzaima one case of forgetting to declare a local can be bad enough
 
@ngn What lesson?
 
ngn
@Adám next time "hello! interested in apl?" grabs someone's attention
@rak1507 it doesn't have to be constantly, but i think it's important to do that the first time you explain it. at least.
 
2:48 PM
@ngn That'd be very strange. Do you introduce K by mentioning its issues?
 
ngn
i don't teach k
 
@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!
 
(And if I don't mention ⎕IO, rak1507 will…)
 
ngn
@rak1507 that sort of confirms my point
 
But nobody introduces a subject by mentioning its issues, whether they have monetary interest or not.
 
2:51 PM
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
 
@ngn but all languages do that to an extent, and this is where we might disagree, but imo the mistakes in APL are easy to work around
 
@rak1507 well, except k, it doesn't have any problems :)
 
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
@RikedyP we're not talking about small imperfections, we're talking about serious issues with the language
 
@dzaima That's not good, though; what is there then for ngn to complain about?
 
2:53 PM
@Adám that not everyone is using it of course!
 
@rak1507 "it"‽ There are like a dozen of so Ks and they are way more different in their core meanings of glyphs than say APL dialects.
 
s/it/them
 
@ngn Where is the giant pros and cons list of all programming languages with respect to all tasks you might want to use them for?
 
ngn
@RikedyP all? we were talking about apl
 
@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
 
2:56 PM
@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
@Adám "perverse" was about "obverse" :) different topic
 
@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
 
@ngn So you don't find dynamic scoping perverse?
@RikedyP *cough* K *cough*
 
@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
@RikedyP for instance mention how bad ⎕io is when introducing ⍳N. or: don't teach tradfns at all.
 
3:05 PM
@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
@Adám i thought you were referring to my joke about "obverse", it's somewhere on jsoftware.com
@Adám i'm not convinced it was wrongly
 
So your provably false claims where not "wrongly" made?
 
ngn
@Adám so, you claim to be criticizing dyalog's flaws in public then?
 
@ngn Depends on their background and use case, to be honest
 
Oh, you mean your accusations of dishonesty about Dyalog. Odd.
 
ngn
3:08 PM
@Adám yes. you never published the actual solutions.
 
@ngn We never promised to.
 
ngn
that's what an honest person would do
 
So you decide what an honest person would do?
You yourself admitted that it all seemed unlikely, and on top of that, we did eventually (when reminded enough) correct the mistake.
 
ngn
now i can only give you the benefit of the doubt, but you haven't proved that i wrongly accused you
 
Everyone involved is aware we are not going to get anywhere here, yes? Can we stop this?
4
 
3:11 PM
@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.
 
ngn
@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.
@Marshall sure, sorry for the noise
 
@Marshall I only come to the Orchard for the drama these days
 
@Marshall Yeah, I have better things to do than defend against baseless accusations.
 
ngn
@Adám don't get involved in organizing competitions then
"baseless"..
anyway, we were talking about ⍤ vs /: \: '
 
@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
@RikedyP popcorn at the ready?
 
3:16 PM
@rak1507 Speaking of which… I have test cases to write.
 
test cases to leave out to catch people ;)
 
Sorry about that. I can't prove that that one wasn't left out to catch people, but you can choose to believe me or not.
 
ngn
@rak1507 it's not so much about prizes, i have a reputation to defend :)
 
you're not doing your reputation any good by constantly complaining about such trivial issues
 
@ngn If a built-in function f takes three arguments, can you give it one argument and have it become an infix function?
(In K, if that wasn't obvious.)
 
ngn
3:21 PM
@rak1507 when you're being screwed, you must protest, otherwise they'll keep on doing that because they'll think you'll back down again
@Adám no
 
@ngn Still, that could have been allowed, no?
In what order are the argument slots filled? Left to right or right to left?
 
ngn
@Adám no, verbs and dervied functions are the only kinds of functions that can be applied infix
 
@ngn a few minor errors over the course of several years doesn't seem like a huge injustice to me
 
@ngn And curried functions are not considered derived?
 
ngn
@Adám currently right to left in mine, i'm not sure about others
@rak1507 that was my point - one should fight even over small injustices
 
3:26 PM
@ngn doesn't seem worth the effort to me
 
ngn
@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)
 
cmc: the monadic train (f g h) expressed using only function composition ⍨ ⍥ ∘ ⍤ etc
(I don't know if this is possible)
 
@rak1507 Isn't that already a train? Also: monadic or dyadic?
Did you mean "as a non-train derived function"?
 
yes
 
g∘h⍨∘f⍨
Verification: ⋄ f←{'f'⍵} ⋄ g←{⍺'g'⍵} ⋄ h←{'h'⍵} ⋄ g∘h⍨∘f⍨'x' ⋄ (f g h)'x'
 
3:32 PM
@Adám
┌→────────────┐
│ ┌→─┐   ┌→─┐ │
│ │fx│ g │hx│ │
│ └──┘ - └──┘ │
└∊────────────┘
┌→────────────┐
│ ┌→─┐   ┌→─┐ │
│ │fx│ g │hx│ │
│ └──┘ - └──┘ │
└∊────────────┘
 
@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 You're right, I should have treated the incidents as separate. I'm sorry, @ngn
@rak1507 Actually, g∘h⍨∘f⍨ isn't entirely correct. It should be g⍨∘f⍨∘h⍨
 
how come? it seemed to work in your demonstration
 
Verification: ⋄ f←{i+←1⋄('f'i)⍵} ⋄ g←{i+←1⋄⍺('g'i)⍵} ⋄ h←{i+←1⋄('h'i)⍵} ⋄ i←0 ⋄ g∘h⍨∘f⍨'x' ⋄ i←0 ⋄ g⍨∘f⍨∘h⍨'x' ⋄ i←0 ⋄ (f g h)'x'
 
3:37 PM
@rak1507 ^ Wrong order of application; h should be applied before f.
 
Ah yeah
thanks, that's cool
 
ngn
@Marshall i'm trying to decode that.. are you talking about adam not criticizing apl in lessons? or about competitions not publishing winning solutions?
 
All that effort and my function is still not invertible! grr
 
@ngn Both.
 
ngn
@Marshall i think making mistakes is ok, as long as the organizers either correct them or come clean by publishing winner solutions immediately
otherwise: fuss, drama, long word-fighs in chat, doubts and unprovable accusations/defenses..
 
3:44 PM
@rak1507 Now for the counter-challenge: Implement the dyadic form as a single derived function (by any means).
 
@Adám I will give it a shot but no promises..
 
@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.
 
@rak1507 The idea is that you can write two operators A and B such that (f A g B h) ≡ (f g h)
 
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
@Marshall dyalog is a company (the company when it comes to apl), not just one misguided but well-meaning community member
 
3:51 PM
@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
 
@ngn My point stands. Are you going to tell me the APL community would be better off without Dyalog?
I'm not terribly fond of Dyalog as a company either. I left just like you, and I don't use Dyalog APL.
 
ngn
@dzaima how do you explain the reluctance to publish winning solutions (not: amalgam thereof)?
 
@ngn There's this dynamic where taking action is punished but not taking action isn't. Have I mentioned it before?
 
@ngn old fashioned company storing private information in the same files as the solutions can't be bothered removing it?
 
Or maybe it is a substantive amount of work, and we have more important things to do?
 
ngn
3:54 PM
@Marshall good question
 
Never attribute to malice that which is adequately explained by stupidity...
Not that it's necessarily 'stupid' to not publish solutions, but the point still stands
 
ngn
@Marshall afaik, inaction is considered a kind of action (even in criminal law, which is irrelevant here)
 
@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!
 
ngn
@Adám maybe or maybe not
 
@ngn and you of course assume the "maybe not" case and write it off as malice
 
3:58 PM
@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
@dzaima "maybe or maybe not" is a statement assuming less than what i was replying to
 
@Adám that's just a poor decision problem, the competition has been running for what, over a decade, and there's no automation?
 
@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 :) )
 
01:00 - 16:0016:00 - 00:00

« first day (1456 days earlier)      last day (1199 days later) »