« first day (1256 days earlier)      last day (1388 days later) » 

3:16 AM
@user41805 Here's that page on functional programming. I'll probably be adding more examples soon, although I don't have any great ideas. Let me know if there's anything you think would be a cool demonstration of functional capabilities.
 
 
4 hours later…
7:25 AM
@Marshall interesting! I like this idea of having labels internal to the block. Not sure if I have seen that elsewhere but should make the whole label experience feel a bit, I don't know, fiddly could be the word. My experience comes mainly from Perl 5 though, I'm sure there are languages where the label semantics don't feel quite so jarring to use (is this the start of a heredoc? oh, no it's the beginning of an n-dimensional for loop construct with labels all over it. yay? :S)
 
 
2 hours later…
RGS
9:44 AM
@RichardPark once you told me how some people trigger an error in their code on purpose so they develop the remainder of the code with the debugger open, or something like that, but I can't find those messages of yours... do you know what I am talking about?
 
10:00 AM
@RGS was that maybe in the last webinar? Rings a bell for me too.
If I recall correctly he was referring to John Scholes as an example of people who program that way, but it's a fuzzy memory ("where? when? who?")
 
ngn
10:15 AM
@RGS this?
 
RGS
10:40 AM
@ngn hm probably, I thought it was Richard Park who said it to me... thanks!
@ab5tract not quite; maybe he said something similar, but I was trying to recall something that was said specifically in this chatroom; something like what ngn just linked ^
 
10:57 AM
@RGS Have to agree with @RGS on this exchange. Integers to a math-person might mean set/group/ring, but it always is assumed to have the usual ordering. Which has nothing to do with {3,1,2}={1,2,3}. It simply means that the operator is well-defined. Just like if = is well-defined we can say there's a notion of equality in the set, and if + is well-defined we can say there's a notion of addition in our set. So too, a well-defined implies we have a notion of order.
The conditions required to have an well-defined ordering are simply:

Antisymmetry: If a≤b & b≤a then a=b

Transitivity: If a≤b & b≤c then a≤c

Connexity: a≤b or b≤a

Of course, this doesn't guarantee it makes sense in context with all the other operations, as you it'd be well-defined to say 1≥2≥3≥4... If you're talking about a group, then an ordering requires additional conditions like: If a≤b, then a+x≤b+x for all x. Anyway, hopefully that makes more sense. For a taste of what a non-orderable set looks like then, one need only consider the complex numbers. They 'get bigger' in 2 dimension
@dzaima ^
Sorry for the rant!
Anyone know why there can be no such ordering didn't linkify?
Nevermind, figured it out!
Sorry about all the empty lines, I wrote it elsewhere and pasted it in; didn't render as meant.
 
 
2 hours later…
1:17 PM
if a file is executed in a function, should the file execute in the current scope, or the global one?
 
1:47 PM
 
RGS
@dzaima (current?)
 
@RGS i.e. if i did {•EX"f1"}1, (with the file containing E1←⍎), should E1 be avaulable only in the dfn, or outside it too?
 
 
1 hour later…
RGS
3:04 PM
@dzaima ugh I don't know :/
 
 
2 hours later…
5:19 PM
@dzaima Lexical scoping would indicate that a file is its own lexical unit, so it should have its own scope. I'd be inclined to say there's no need for such a thing as a global scope: your global is probably someone else's local. But I need to find import/export mechanisms that work well in this system.
 
@Marshall i definitely want it to be possible to have an executed file set visible variables though (and we don't have namespaces yet)
and in my system there is one definite global scope that has no parent scope
 
@dzaima Sure, do whatever you have to short term.
 
and the question still remains - should, in {𝕊 x: •EX"f1"}5, the code in f1 be able to see the variable x?
(actually looking at it that way the answer is a mostly obvious no)
 
@dzaima - If you follow the paradigm that many other languages use, then you should be able to SEE x, but not necessarily MODIFY it, and if you try to modify it, you actually create a localler version that masks it.
 
@JeffZeitlin what are those "many other languages"?
 
5:28 PM
@dzaima - Pretty much anything that descends from Pascal, and I'm pretty sure most C-family languages as well. Definitely PowerShell, which implies C#.
 
(and BQN is very strict in how variable viewing and modify works already - creates a new variable in the current scope or errors if there already was one, and modifies the variable wherever it was defined)
@JeffZeitlin i think you've misunderstood - •EX executes a file; neither Pascal, C nor C# have native dynamic file execution afaik
 
@JeffZeitlin This implicitly passes a lot of state that you might not want to. If you have a "configuration" variable that is optional, then every caller would have to check whether that variable exists anywhere in the scope to avoid accidentally setting it. And if you're going to avoid this by making all variables required, why not pass them like arguments instead?
BQN2NGN doesn't even allow variable shadowing, although I remain conflicted on that point.
 
@dzaima - Mmmm... That gets sticky, then. Is executing a file like calling a subroutine, or is it like $include-ing it textually and executing the included code inline?
 
@JeffZeitlin i'll answer with a "maybe yes, maybe no". :)
that's what the question is about - what should it be?
 
Well, I've seen it handled both ways. Which is more in keeping with already-established models within the language?
 
5:34 PM
@dzaima Long term, I would say it has to work like a function call. Short term, I don't think it really matters.
 
RGS
@Adám, when the dfns become a GH repo I'll add the Lisbon metro line to this. What does it take for those things to become a repo?
 
If it were TradAPL-ish, I'd treat it like a super-fireplug/execute, and it'd be inline. Or I'd make it ambivalent, with the optional leftarg being effectively a boolean for "globalize or localize?".
 
@JeffZeitlin (funnily enough, i'd be okay with the opposite - you can write variables, but can't see any previous ones (as a file with a single line of •←x feels like it should error always))
 
6:25 PM
@Marshall thank you for the write-up, i will go over it soon
@Marshall the former is much neater, although i'm not entirely sure how it works, looks like i have some reading of the grammar and context to do
 
@user41805 there acts pretty much as in APL, so it's like {⍵∘+} (and dzaima/APL allows that)
 
how long have you been supporting that? i never knew that o_O
 
@user41805 since functions could return things. Never bothered to disallow it, so it's allowed. ¯\_(ツ)_/¯
(dzaima/APL, other than built-ins, is pretty much BQN, except functions aren't values (easy fix), and the type of expressions is dynamic, not static (not so easy fix))
 
7:13 PM
@AviFS For Phase 2 problems, we attempt to provide complete, but not necessarily explicit, problem descriptions. If there are any conditions, qualifications, or exclusions placed on the arguments or result, we try to state them. We expect the coder to think of edge cases and not make assumptions. Part of our judging criteria is to see if the coder has addressed the edge cases.
 
 
3 hours later…
10:40 PM
@RGS Actually making it a repo of text files is very easy (already done). Problem is that we use dfns.dws in our QAs, and loading things from text files requires other things (Link) which might not be available at QA time.
 
RGS
11:06 PM
@Adám so in what format are they used in the QAs (what are those?) and how would that be shareable on GitHub?
 
@RGS As a workspace. A naked interpreter can load a workspace. Having a binary blob on GitHub would be a mess.
 
RGS
11:27 PM
@Adám agreed. So what type of shenanigans are you considering?
 
@RGS Not sure. Maybe compile the workspace from text files using a previously QA'd build.
 
RGS
@Adám it does sound reasonable to be able to have a text file representation of a workspace
 
@RGS Link provides that. Only problem is that Link isn't a native function of the interpreter.
 
RGS
@Adám would it make any sense to have the workspace represented as some type of log of things you would type in the interpreter in order to define that same workspace?
 
@RGS One giant file? Sounds a bit unwieldy. Not the approach we've gone with, which is one item per file.
 
RGS
11:45 PM
@Adám maybe a sequence of files? Probably doesn't even need to be seen as a sequence. Still one item per file (or a related set of items) and the things you would have to type in the interpreter to add those items to the correct workspace
I have no idea if this makes any sense, just bouncing ideas off of you
 
@RGS I guess it could be done. In fact, with multi-line input, the files Link uses should already be usable like that (except arrays, because we don't have native support for the notation yet). Handling namespaces would be the biggest issue.
 
RGS
@Adám alright, so part of the work would already be done... Is the namespace handling something doable? Or would it be very unpractical?
 
@RGS Come to think of it, the only namespaces in dfns contain only character vectors, so I might be able to rig something custom together.
 

« first day (1256 days earlier)      last day (1388 days later) »