« first day (847 days earlier)      last day (1790 days later) » 

Ven
12:29 PM
Oh, just now do I realize using @ with rank works well...
 
@Ven Yeah, for many things @3⍤1 applies to the third column.
 
Ven
I'm only now watching a talk from 2017... My "Watch Later" list is where things go to be forgotten...
 
 
2 hours later…
Ven
2:20 PM
I really need to spend some time with Dyalog's Namespaces and Class system...
the whole quad-WC Label, Grid, ... are .Net-only, right?
 
@Ven Yes.
 
Ven
Ah, I remember Dyalog started supporting SilverLight at some point...
Does the Dyalog book have infos about class etc? I really need to go further. It's been 2 years..
 
@Ven Mastering Dyalog? It has on namespaces and on ⎕WC but not on generalised OO. APL cultivation has 5 lessons on that though (17–21).
 
Ven
OK, thanks.
 
 
1 hour later…
3:44 PM
Hmm, on help.dyalog.com/17.0/Content/Language/Primitive%20Operators/…, shouldn't the right in "Note that the ravel of the mask selects from the ravel of the right argument's index array" be replaced by left?
 
@TorstenGrust No:
⍞←'ACD'@{1 0 1 1 0 0}'abcdef'
 
@Adám AbCDef
 
I was thinking of cases where the mask has rank > 1.
(Uhm, I have to board a flight, apologies. Be back later.)
 
⎕←'ACD'@{2 3⍴1 0 1 1 0 0}2 3⍴'abcdef'
 
@Adám
AbC
Def
 
3:50 PM
@TorstenGrust ^
@TorstenGrust The right argument's index array is ⍳2 3 so the indices of items that get replaced are:
⎕←(,2 3⍴1 0 1 1 0 0)/,⍳2 3
 
@Adám
┌───┬───┬───┐
│1 1│1 3│2 1│
└───┴───┴───┘
 
Ah!
The term index array makes sense now.
Great. Thanks, @Adam.
 
@TorstenGrust No problem. Have a safe flight! ⍋
 
Thanks (Frankfurt → Tokyo)
 
Ven
Come🎵 Home🎵 To🎵 Tokyo🎵
@TorstenGrust If you're looking for Haskellers in Tokyo btw, I'm interested ;-)
 
4:04 PM
😀
 
Ven
(Just in case; who knows?!)
 
I am not hiring, if that‘s what you mean...
 
Ven
Hahahaha
 
Heh. Anyway, flight mode. TTYL.
 
4:16 PM
@Ven Are you looking for a job?
 
 
3 hours later…
Ven
6:54 PM
@Adám I’d like to get away from Paris and from my current job, yes
 
@Ven Why not apply for an internship or job with Dyalog?
 
Ven
@Adám going back to being an intern after 3 years of cooptation would be weird. For a job, I don’t think I hve a tenth of the qualification required to do that
 
@Ven Eh, we'd train you. Just ask @RichardPark!
 
Ven
Also, I know Dyalog is looking for people in the very-long term, and I’m not sure I want to set things in stone 1 month after my graduation ceremony :)
Though it’s definitely very interesting
 
@Ven It think everyone has running contracts, and are free to go with 3 months notice. We've had people stay for relatively short periods too.
 
Ven
7:01 PM
I wouldn’t know how to deal with relocation here but that’d be an issue for much later...
 
@Ven We already have one guy in France.
@Ven Instead of asking Dyalog for a job, why don't you email careers@ and ask what Dyalog can offer you? Of course, include as much as you can about your background and experience.
 
Ven
@Adám i want to relocate, I just don’t know much
 
@Ven What does relocate mean? Out of Paris, or out of France, or out of Europe, or…?
 
Ven
@Adám out of france
 
@Ven I think you should come for a visit. We'll pay.
 
Ven
7:11 PM
Er, I’d definitely feel bad about that...
 
@Ven What do you mean? The paying? We always pay people's travel expenses. We have a house for you to stay in as long as necessary too.
 
Ven
That’s definitely nice of you — looking for jobs abroad has been a bit of a pain — but having golfed a few answers here with your help doesn’t qualify me much :)
 
@Ven Oh it sure does. We've had a few such people as interns (@marinus and @H.PWiz) , and @Nathan visited 6 weeks ago — and was hired. He now helps customers and is involved in plans for the future. @RichardPark knew nothing of APL when we hired him, and now he's helping customers and writing documentation and guides, and developing showcase applications…
 
@Adám this is compelling to me too, maybe i could look into it at some point in the future :)
 
@dogstar :-) Looking forward.
 
Ven
7:24 PM
Something in me’s telling me it’s not right — I shouldn’t be asking that way
 
@Ven :-D Feel free to write whichever way, but don't hold yourself back out of fear that you don't know enough APL. Just be honest about it.
 
Ven
7:42 PM
Would I even mention APL? Maybe that one repo about operators which had made the rounds on the reddit /apljk/
 
@Ven Yes, yes, that, and you've golfed a lot and been active in the room here, and some lessons too, iirc. You even attended a meet-up. That's way more than most can claim.
 
8:14 PM
I get the feeling that the power operator is quite new, and that it works particularly well with dfns; if that's so, and APL isn't mandated to do tail recursion optimization.. what would be a traditional way to approach a recursive problem?
with an explicit loop? with a right-arrow goto? transform it some other way?
 
@TessellatingHeckler APL does do tail recursion when (obviously) possible. Dfns can explicitly recurse by calling themselves using (meaning they don't need a name). Tradfns can recurse using their name. "Mutual recursion" (f calls g and g calls f) also requires naming. Then we have explicit loops using either control structures or goto.
 
@Adám I believe Dyalog does tail call optimization, but NARS2000 doesn't - but I'm not sure I can find a reference more recent than 2013 for that. Self-recursion with ∇ is what I used, I was just wondering what someone from earlier years would do - I guess explicit loops with control structures is probably my answer
I still need to learn to write code that goes beyond one line :D
 
@TessellatingHeckler NARS is a research system, not intended for (and in with no attempt to achieve) performance. I think all traditional APL vendors implement tail recursion.
 
Ven
@Adám the 2016 paris meetup was too great. I miss it. I also « won » the tacit challenge there
 
@Ven Put that on your resume!
 
8:28 PM
@Adám sure; I'm not after it for performance, I'm after it for not hitting a stackoverflow and crashing out
 
Ven
I have enough stupid github projects to fill it
 
or recursion limit.
but it's interesting that it is a traditional thing; the first implemented LISP slightly predates the first implemented APL, I think? I'm a lot more interested in these ideas now, than I ever was when "studying" CS
PowerShell my default script doesn't optimise it, nor C#, nor CPython.
 
@TessellatingHeckler Tail calls documentation.
 
8:47 PM
@Adám thanks; "a branch with arguments", I like it. What is this traditional line doing? ` top:→(⎕CT>value-limit)/0 ⍝ test`
a colon after top, and a right arrow which isn't a goto, and quad-ct are all unfamiliar. I guess top: is a label?
 
@TessellatingHeckler (which is exactly the same as :GoTo) can take a vector and branches to the line indicated by the first element. If the vector is empty, it does nothing, and execution proceeds as usual.
 
quad ct is ... ooh comparison tolerance; some mathemagic for handling float precision
 
@TessellatingHeckler Yes, top: is a label, which simple has the effect of making the name top be a constant equal to the line number of the line that top: appears on.
 
@Adám "branches to the line" - the line number? scratch that, a constant equal to the line number. That's how the →top⍝ jump line that I recognise, must work.
 
@TessellatingHeckler So it says, top: this line is called so; go to; (condition); / replicate 0. So if the condition is true, you get 1/0 and if false, you get 0/0.
@TessellatingHeckler Yes, uses numbers of lines with the first line being number 0.
1/0 evaluates to a 1-element list of a single 0. 0/0 evaluates to the empty numeric list.
→0 means "return" and →⍬ ( is shorthand for empty numeric list) means do nothing — proceed with the next statement.
 
8:54 PM
@Adám so line numbers must start anew inside each trad-fn? This isn't BASIC's 20 GOTO 10 where there's one set of line numbers for the entire program?
@Adám whoa, that is so .. different to anything I would have guessed.
 
@TessellatingHeckler Right, each function has sequential line numbers from 0, and are continuously renumbered if additional code is inserted. That was so from day 1 of APL. I have no idea why BASIC has such a silly system.
@TessellatingHeckler Traditionally, line 0 would be a "picture" of how the function (tradfn, that is) is called, including what variable(s) constitutes the result, so branching to 0 essentially means go to the declaration of what needs to be returned — and thus, return it.
 
@Adám I'm glad you added that explanation; my experience was leading me to "you would want to jump to the end of a function to end it, and to the beginning to restart it. But you don't know where the end of an arbitrary length function is, but you always know it begins at line 0 so that must be a convenience". I have seen that kind of line at the beginning of a trad-fn, I think, without understanding the syntax of it
 
@TessellatingHeckler Here:
[0]   result←leftArg FnName rightArg
[1]   result←leftArg+rightArg
@TessellatingHeckler That's a valid tradfn. Now you understand how to read it? (I've added line numbers, but they are not actually part of the code.)
 
@Adám I think I can read it; have I seen variations with more than a single left and right arg ? Is there an official connection between the result at the beginning of line 0, and the return value? I imagine there must be, but I'm suspicious it might be "the last thing evaluated is returned" and convention to name them the same in both places.
 
9:10 PM
@TessellatingHeckler In Dyalog, result and right argument may be name lists, e.g. (res1 res2)←FnName (arg1 arg2), and there is additional syntax for "shy" (we can get back to what that means) results and optional left arguments, and also to declare locals. But the header is strict: The function returns whatever is named as in the stated result, no matter what happens in the function.
 
(I should really carry on with the bookmarked tutorials and not jump about so much)
 
@TessellatingHeckler Don't confuse tradfns (traditional functions) with dfns (a relatively new Dyalog invention). The latter do not have any name for their result and instead, the first non-assignment is returned (bar guards and errors).
@TessellatingHeckler I don't mind :-)
 
@Adám OK, neat. "shy" results can wait for a while :) Yes, trad-fns and d-funs are different, and from how much I see dfn code around, people could almost have called them "more funs" (boom boom)
 
@TessellatingHeckler They are good for FP stuff, golfing, small utilities and inline functions, but the real money is made with tradfns.
 

« first day (847 days earlier)      last day (1790 days later) »