« first day (1231 days earlier)      last day (1416 days later) » 

5:10 AM
@dzaima Yeah, I found that eventually. But I'd still like to hide all unused code points.
 
 
2 hours later…
7:32 AM
@dzaima Huh?
 
8:02 AM
@Adám also, but all have been fixed in the latest builds (there might be a couple more but didn't notice any commits)
huh. ¯\_(ツ)_/¯
disabling assertions, double-huh.
 
Wait, you have but not ?
 
@dzaima ah
@Adám seems so. right, should remove monadic
 
@user232736 Hej igen. Jeg ser at du kommer her ret ofte. Hvis du vil deltage, så skriv bare en email til mig: adam@ med samme domæne som www.dyalog.com
 
8:27 AM
@dzaima Huh?
 
@Adám what should (f⍛g)A do?
 
Just discovered Aaron Hsu's presentation from Dyalog-17 (Patterns/Anti-Patterns). Kind of bowled me over.
 
@dzaima g f ⍵ but that's irrelevant. I was using it dyadically, no?
 
@Adám 1,⍛,⍛,21((,⍛,)⍛,)2((,⍛,)1) ,2
 
Ah, you're right, of course.
 
8:32 AM
@dzaima fixed that and a whole load of other small issues with
 
OK, I think I've got 37 for Bubbler's upcoming rainbow using dzaima/APL.
 
@Adám hm, i could see that being useful, but it certainly feels like another feature, not an extension of
 
@dzaima Sure it is. is before in that it applies f before g, monadically as well as dyadically.
Just like is after; it applies f after g, both monadically and dyadically.
 
@Adám besides the execution order of the operands (which there are like only ±2), is very different from g f ⍵ though
i might even argue for (f⍛g ⍵) → g ⍵
 
Yeah, that was my initial opinion, but then I realised that g f ⍵ was both useful and made sense.
@dzaima Hm, seems Marshall made it (f x)g x in BQN: try it
 
8:49 AM
@Adám at least it keeps the property that the right argument is untouched when given to g
 
Yeah, but I don't think (f x)g x makes sense, as that has an implied . Same issue I have with J's 2-trains.
 
..i'll just leave it undefined for now. ¯\_(ツ)_/¯
 
It doesn't matter for me here either, as preprocessing the left argument with multiple functions is f⍤g⍛h
 
9:43 AM
@Adám encoding → compact?
 
@dzaima Oh man. That's a lot of wasted time, but at least no more. Thanks a bunch!
 
@dzaima but that disallows using ctrl+shift+. to go to unused glyphs, so it's useless to me
 
10:19 AM
this was fun. and are janky, could curve some more but i think it's usable
 
@dzaima I'd ´ and ˘ a bit bigger. Also The symbol inside the circle in is supposed to match ˘
@dzaima I'd make have equal-length "legs".
 
@Adám i made it be of equal height to but i guess that makes sense
 
I wouldn't mind it sticking down below (as it is so light there) even until the middle of the character bounding box.
 
@Adám ´ was actually the one thing that was already in APL386, i just moved it up :p (i will change it though); ˘ could indeed be bigger
@Adám i was trying to go along the theme of all the monadic ops being superscripts, so i wanted some constraints around that
 
@dzaima That's because I included it as an accent. Wasn't intended to be a "symbol". It is supposed to be a superscript slash.
@dzaima Sure, but it'll still look superscript, even if a "tail" hangs down a bit.
@dzaima The dots in look a bit anaemic. Again, it is supposed to be the ¨ symbol inside.
 
10:29 AM
@dzaima (i also thought of more as an "upper reverse ¬")
 
Oh, but it symbolises the two axes of an outer product (on vectors).
 
@Adám outer product isn't necessarily rectangular :p
 
@Marshall Hm, I still think the power operator should be to get the full symmetry:
¨ ←→ ⚇¯1
˘ ←→ ⎉¯1
⁼ ←→ ⊜¯1
 
Nic
Those glyphs are nice when displayed large, but hard to distringuish at normal font size
 
@Nic Well, depends on your font. dzaima is working on that…
 
10:38 AM
@Nic i did try to put in some effort on making my font work on small sizes (though haven't touched probably the most important thing - hinting - because i have no clue how that works :p)
 
@dzaima Your looks a lot like a or a . It is supposed to have a hook, not a corner or curve.
 
@Adám the ¨ doesn't fit inside without bumping the sides, that's why i scaled it down
 
@dzaima Sure, but you can move the dots closer together to scale down less.
 
@Adám that was a laziness choice, didn't really think about it much
 
11:11 AM
@Adám i think i still like my version better. it looks better on smaller sizes and more preserves the "shape" of ¨
updated also looks very similar to
 
@dzaima Shouldn't be an issue, as isn't used.
 
11:43 AM
@Adám Monadic ⊸ as F⊸G˜ is pretty much forced if you want k⊸G to be Bind, since operators shouldn't do different things based on syntactic class. That said I am also finding it very useful for things like 0⊸≤⊸/ .
 
@Marshall But why isn't that 0⊸≤⊸/˜?
 
@Adám Still disagree. ⍟ is the best symbol individually, and I don't think that's worth losing to make it match ⁼ .
 
@Marshall (btw, SE chat uses markdown. If you don't use it, you'll suddenly have symbols disappear as they format their surroundings)
 
@Adám You mean 0⊸≤˜⊸/˜ ?
 
@Marshall I don't understand why that would make a difference. f⊸g calls its left operand monadically, no?
 
11:50 AM
@Adám Yes, so if monadic F⊸G is F∘G, then monadic 0⊸≤ isn't going to work like you want.
And forcing it to work by checking syntactic class means that has special properties that a user-defined operator could never have.
 
@Marshall Certainly in APL, one can check syntactic class. And I thought you described and as "bind"?
> the array is treated as a constant function, except for the monadic cases of A⊸g and f⟜B, which are slightly modified to be Bind operators.
 
@Adám APL doesn't have syntactic class in the same sense as BQN. It looks at values to find class. In BQN you could also look at a value's type, but you won't find the class it had at an earlier point in the program.
@Adám That's no longer accurate because I've made things consistent.
 
OK.
 
@dzaima updated
 
"...Rank, or, as we sometimes call it, the Poké Ball operator..."
 
12:03 PM
@dzaima Much improved. I'd still disconnect the ˘ from the even if Unicode doesn't agree.
 
@Marshall :D
@Adám that's certainly an option (that i hadn't considered)
 
@Adám Personally I don't think there's any need to make things so rigidly consistent though.
 
@Marshall it helps with readability too though
much cleaner on small sizes
 
Okay. I would have thought the opposite, that disconnecting it just turns it into another "circle with blob of stuff in the middle".
One little thing to check is that BQN uses the star operator and not an asterisk, so make sure that looks right.
 
The star and asterisk are identical in APL385/6
 
12:10 PM
@Marshall APL385 makes them both equal, so i'm keeping that unless there's reason not to
@Marshall luckily, all the other "circle with thing inside"s are pretty different (i'm more concerned with but that's not in BQN anyways)
 
ngn
hey @marshall, can you share any thoughts on layers less superficial than syntax? like, how would you do memory management right? parsing? interpretation(treewalker|bytecode|jit)? closures? do you prefer dyalog namespaces (reference-semantics) or k dicts (value-semantics)? vectorization: how would align the "pockets"? and what would you put in the header?
 
@ngn A lot of the implementation details are undecided. I am definitely going to use the Co-dfns style for the compiler, but the runtime is a bit of a blur.
 
ngn
@Marshall "co-dfns style"?
make it work on the gpu?
 
Memory management will be reference-counted in general until/unless I add a mutable type, but should mostly be handled by lifetime analysis in practice.
@ngn Implemented with array operations that work on the entire source code at once.
Dynamic features will be interpreted at first and then JITted. Closures will exist, that's all I know about them.
Pocket alignment will be variable, and decided by negotiation. Probably aligned to the largest register size available (8/16/32/64-byte) if I don't know how it will be used.
I prefer immutable dictionaries for ordinary programming, but I think mutable namespaces can be helpful to organize code. I may make namespaces available just by having a function that returns the current scope as a mutable value.
So {a←3⋄F←+⋄•scope} or however it's written gives you a namespace initially containing a←3 and F←+.
 
ngn
12:25 PM
@Marshall with a pointer to the parent scope?
 
@ngn I don't think so. You can access things in the parent scope anyway, because of lexical scoping.
 
ngn
@Marshall this means no long-lived closures then?
 
In general I'm not going to attach a bunch of metadata (like functions knowing their name) to everything.
@ngn I don't know what you mean. I do intend to make closures work like Scheme, etc.
 
ngn
@Marshall what about "shape" as a (variable-length) field in the header vs as a ptr to another array?
@Marshall i mean one function can return another function, and the latter could be invoked in a different place in the code, where the lexical context doesn't match its original (probably too complicated a question to worry about right now..)
 
@ngn It'll be separate. Often I think the rank and then shape will be computed completely separately (maybe even statically) followed by the ravel.
@ngn That should be allowed, and the function will remember its context. In my opinion anything else is not a correct implementation of lexical scoping.
 
ngn
12:33 PM
@Marshall regarding memory management: reference counting - of course. what about a "compactable" workspace (i don't know what the right term is.. whatever dyalog is doing) vs a buddy system?
 
@ngn Have no idea how I'm going to do allocation at the moment.
 
ngn
@Marshall jit, closures - that one message of yours implies quite a lot of work
thanks for replying to my questions
 
@ngn I know. The JITting itself shouldn't be too hard as it's self-hosted, and deciding when to JIT fits into the model of negotiation and renegotiation to choose data/function representations. Closures I will probably just put off for a long time.
 
ngn
12:50 PM
@Marshall jitting doubles the potential for bugs and inconsistent behaviours, and it has to be impl'd separately for each arch(wasm|x86|x86_64|arm.. unless you restrict it only to wasm)
i don't know if jitting to wasm can be considered really jitting, but for the sake of argument.. :)
 
1:39 PM
@ngn There is going to be a LOT of testing. I has an x86_64 JIT, so I do have some experience here.
Regarding portability, that's why I am trying to implement as much in BQN as possible.
 
2:06 PM
@Marshall not sure if you have addressed this or not, but will rational numbers factor into your implementation?
 
@ab5tract No, at least not initially. I am trying to keep the language very simple, at least initially, so the data types will be 64-bit floats and Unicode characters.
Honestly, it might not even have characters for a while.
 
Interesting :)
 
2:50 PM
@Marshall In group you have:
         phrase ← "BQN"‿"uses"‿"notation"‿"as"‿"a"‿"tool"‿"of"‿"thought"
         ⥊˘ ≠¨⊸⊔
    ┌
      ...
          ┘
Don't you mean:
     phrase ← "BQN"‿"uses"‿"notation"‿"as"‿"a"‿"tool"‿"of"‿"thought"
     ⥊˘ ≠¨⊸⊔ phrase
┌
  ...
      ┘
?
 
@AviF.S. You obviously missed the part of the spec where BQN does whatever you want it to.
...fixing it...
 
@Marshall Haha, it sure seems that way to me!!
@Marshall I would've forked and proposed, except you're the only contributor rn and it just doesn't seem right to be listed as a contributor over typos, lol! Let me know if that's not the convention for Github, because doing it the other way would make it easier for you to fix/merge!
 
It's easier for me to fix the typo than to look over a one-line PR, so I'd prefer the message here for really simple things.
 
APL Orchard Live at meet.jit.si/APLOrchard right now!
 
Typo fixed, and I now have end-to-end testing that compiles and runs wasm.
 
3:00 PM
@Adám Uh oh... I thought it started in half an hour?
@Marshall Sounds good, my conscience rest more easily this way!
 
Oops, I'm off by half an hour.
 
@Adám Phew!!
 
@Adám meet.jit.si doesn't work for me, so I hope that the meet will be recorded. Has anyone found out how to do that?
 
@Wezl Why doesn't it work?
 
@Adám Many sites on my restricted laptop are blocked by GoGuardian, including Imgur, the IOCCC, practically any social media, using developer mode to do anything that is not online, some youtube (i can use invidio.us)
 
3:10 PM
@Wezl Any video conference software/site you can you?
 
@Adám the meet.jit.si instance of jitsi meet is blocked, but 8x8.vc still works
 
@Wezl Hm, but I can't easily record or password protect there.
 
@Adám that's okay, I'll just watch later
 
@Adám @Wezl Zoom/Microsoft Teams?
@Wezl No, that's no fair! Worth figuring out something that works for all, esp. if we want to do it again in the future, no?
 
@AviF.S. No need to sacrifice security for one person's convenience (does MS Teams even run in the browser?)
 
3:18 PM
@Wezl Yup!
 
@AviF.S. without signup?
 
@Wezl Are bots an issue? What sorts of people get in the way without security? Also Zoom certainly has a password and I assume MTeams does too. The issue there was with recording...
Though I'm still not clear on why screen recording doesn't work
@Marshall In "BQN/FromDyalog.md": is still mapped to . Is it worth updating it to have a footnote that says "See docs/group.md", or a link to it?
 
@AviF.S. there would be asterisks like everywhere if one added them
 
@AviF.S. Hey, if someone has the software ready, we can go with 8x8.vc (and hope we don't get Zoom 8x8 bombed).
 
@AviF.S. not being able to switch away from the tab would be pretty annoying
 
3:26 PM
Oh? I thought only Window/Group were more complicated than a simple translation in that table. Operators are also more complex, but they already have an explanation re: the difference in that page. So I don't see why the others shouldn't...
 
@AviF.S. I think BQN's operators are simpler than APL's.
 
I thought it was meant for those new to BQN, and it'd be dreadfully confusing if they simply consulted the table, and it wasn't working at all as it should
 
@AviF.S. I'll revisit that. It's still the case that ⊔ is the function you want to use to implement ⌸, but I probably have some changes to make.
 
also "Correspondence can be approximate", but yeah, is probably the biggest change of all
 
@Marshall Of course, but this was in the BQN→Dyalog table, not the other way around
@dzaima Agreed, I did see that. But this still felt like it deserved a note
 
3:29 PM
Definitely needs to change then.
 
@Adám True, I didn't mean to add a value judgement or make a note on mathematical elegance/simplicity. Just that it's operators are more complex to translate from BQN→Dyalog, not in and of themselves
Although re: @dzaima, I suppose a case could be made for dyadic ↕ to link to docs/window
 
Meeting is on. Password is +/4 5 1 6 8 in APL/J/K.
 
Weren't we using 8x8.vc for @Wezl?
 
@AviF.S. I think we were using meet.jit.si so it could be recorded
 
@Wezl Ah well... sorry about that :(
 
 
1 hour later…
4:56 PM
What is the "broader literature"?
https://chat.stackexchange.com/transcript/message/54601184#54601184
 
5:47 PM
BQN paste language (+ the font):
https://dzaima.github.io/paste/#0XY5LTxNRAIX391fcsCmk48idFtFGSUB84AN8K2xgsAOMDFOBASxiUiMZ7tzO8KiQaUhrpQq0CUk3JLiQmkyXLPwP5xfwE7zduviSc07O4otfaYWtM@Rd8H34Aj4HPwavRSdrt@B9h/fzZh@8Q3gH8KoQPyCqOBTgTXgB3B24X@HuwT9H4F1FkEdQgNiC2IHYhiiACwRnELvkonRRjGrwS/j8OzqdIOBFiF@olBDm4Tex6WF/A0GFIFftH7g9eOfuvftDDx4@ejw88uTps@cvXr56/WZ0TJ98mzampmfMd7PWnJ15P7@w6Cwtr3zIro6TbqYlkj3Xes3rxo2oAf5N/ZsjCE6Q@4OjLzhaR6WGSp1clvdqkvplefdc0pR5U7IlCSVF8I2Pn1IUQZlmjUVq0lk7s0L/f1F9wbBjDjVt6swYdCpjOwo1Y5ZF9XS6Pc1RY9mwnSXdsrKqSuBuw60ryK/DLRAppCkJpUfpVRiTakS6MaU9JduKsnXoHSkm37HJWEprb50srnW1ws5EPNl
 
@nathanrogers craftinginterpreters.com is a very good recent one. I'm not a great source for this because I don't remember exactly what I've read. Some of it was courses in college.
@dzaima It doesn't seem to be using a custom font?
 
@Marshall works on chrome & FF for me. clear cache?
 
@dzaima Looking at the css now. It has the BQN386 font but .mainArea doesn't use it; if I add BQN386 then it works.
 
@Marshall ah, SE funkiness - did you click the "(see full text)"? otherwise it won't give you the full link (but, extremely annoyingly, still allow you to click it)
 
@dzaima ...amazing. Well, works with the full link. Looks nice!
@dzaima Since variable class is determined by spelling, I color the variables as well. Here's what my configuration looks like right now: i.postimg.cc/7Y2sT5L0/colors.png
Need to unify the colors for separators (⋄,) and differentiate angle brackets and parens.
 
6:10 PM
@Marshall i did consider coloring variables but it seemed like it's be too much color noise then. Coloring Functions only would make sense though (how about ops?)
 
@dzaima I haven't actually implemented this, but they should be yellow and purple like the primitives. I expect user-defined ops to be fairly rare especially since you can use functions as arguments.
 
@Marshall Understandable. Might also just copy the colors, it did seem too contrasty on your c.bqn
 
@dzaima Yeah, the functions should be fairly dull.
@dzaima On the font side, it's fairly likely I will go with double-struck S for self-reference, and maybe R for derived function self-reference.
 
7:03 PM
@Adám All right, should we announce the first APL Seeds for tomorrow at 14:30 UTC? If you think that's too soon I can back it off but it seems best to alternate weeks with APL Cultivation
 
@Marshall what will it be about? (i am very interested)
 
@Marshall How long? An hour?
 
@cannadayr I think I will do parenthesis matching, and APL to RPN conversion if we have time.
@Adám Yes, an hour.
 
interesting. so like apl interpreter ]\
thx cat
 
@Marshall What is APL Seeds?
 
7:06 PM
*so like apl interpreter concepts?
 
Adám has added an event to this room's schedule.
 
@Wezl Somewhat discussed in our chat today. The idea is to study APL implementation together. I will be focusing on Co-dfns type compilation because it seems promising and also it seems that only Aaron really understands it fully.
Adam suggested "Sewing APLs" and I changed it a little because that's not such a well-known meaning for "sew".
 
@Marshall I actually meant "Sowing APLs", but "APL Seeds" works.
 
@Adám Gah. I understood but forgot how to spell sow.
 
@Marshall Nice, I also like that book about writing interpreters; I've been trying to make my own tiny interpreter for an (eso)lang and that might be helpful
 
7:16 PM
@Marshall is the ⟨⟩Parse𝕩; here syntax you intend to keep, or is it temporary?
 
@dzaima Temporary.
The idea I have now is to give 𝕨 a special value that never gets passed to a function (disappears as a left argument; returns the same value without calling the function as a right argument), and allow 𝕨← kind of like Dyalog. I'm not too sure about that solution though.
 
@Marshall You can sign up here for reminders, and to let others know you'll be there.
 
@dzaima For that I'm inclined to go with the J rules, where any letter continues a number but the number might be invalid.
@dzaima ¬ looks out of alignment.
 
7:36 PM
@Marshall Do agree. it was in the font already so didn't think of touching it
𝕎 turned out way less impossible than i anticipated. ¯\_(ツ)_/¯
 
@dzaima I was dreading it in DejaVu but once you bring the middle part way down it turns out okay.
 
 
1 hour later…
9:03 PM
@Adám - The schedule says that APL Seeds is Wednesdays, not Tuesdays, of weeks without Cultivations.
 
@JeffZeitlin yes. Informal video meet is tuesdays.
 
@Adám - OK; it works for me either way; just pointing it out because when you announced it you said Tuesday, so I wasn't sure whether you'd goofed on the schedule, goofed in the announcement, or needed to change it after you'd posted it.
I'm registered, so as long as I'm not experiencing fecal meteorology "at work", I'll be here/there.
 
Announcement: APL Seeds (class on APL implementation) every other Wednesday at 14:30 (weeks without APL Cultivation)
4
@JeffZeitlin Thanks for catching that.
 
9:26 PM
@Adám - ¡De Nada!
So I took a peek at CGCC and saw this challenge, with 22 answers when I first loaded it up. I read the challenge, and thought "This should be doable in APL..." and started scrolling through the answers... Obviously, I wasn't the only one to think of APL... :)
 
@Adám Bummer! No "APL Sewing," I see :p Really love the new name though! These puns are never-ending ⍥
What an idiot... I see "Sowing APLs" has already been addressed... Too late to delete my comment
 
 
1 hour later…
RGS
10:56 PM
@Adám meaning there is one tomorrow? And is Marshal giving those?
 

« first day (1231 days earlier)      last day (1416 days later) »