« first day (1450 days earlier)      last day (1222 days later) » 
00:00 - 13:0013:00 - 23:00

RGS
12:01 AM
That sounds interesting. I should have a look one of these days.
 
 
7 hours later…
6:33 AM
is #apl on freenode no longer in use?
 
Well, it's still there
 
<loke[m]> This is my Matrix link to #freenode APL
<loke[m]> * This is my Matrix link to Freenode #apl
 
I tried joining and it created a new room : /
 
Which server are you connected to?
And if you're in the channel, don't leave. Because you might be operator, which would be great, since I've tried to regain operator status for years.
The problem with Freenode #apl is that the channel isn't registered. And the only way to register a channel is if you're operator.
 
looks like i'm connected to rothfuss.freenode.net
 
6:47 AM
But you can only be an operator if you join an empty room. If the operator leaves, it'll be operator-less until the room clears, which is pretty much impossible unless the server has split.
 
oops nevermind... I was looking at the wrong datestamp
I can see these messages coming up in my IRC window
 
<elcaro> Here I am
<elcaro> sorry for the confusion (and getting your hopes up re: op)
<elcaro> next question... i'm a dyalog noob. how do I join a vector of strings with another string
 
Like as in JS?
 
<elcaro> like, equivalent to something like: ('one', 'two', three').join('\
') in some other langs
 
6:52 AM
You mean you have 'foo' and 'bar' and you want 'foobar'?
 
<elcaro> well... i want 'foo,bar' or 'foo&bar' or 'foo:bar'... i want to specify the joiner
<elcaro> so join vector of strings into a scalar
<elcaro> i guess
 
I think it's more like 'abc' 'def' 'ghi' f 'XX' -> 'abcXXdefXXghi'
 
So you have an array of vectors?
 
(dang, APL layout is suddenly not working)
 
If x contains a vector of strings, I'd do: ,(⍪x),⊂','
 
6:56 AM
The most elegant way would be f←{⊃(⊣,⍵,⊢)/⍺} for an arbitrary separator
⋄ f←{⊃(⊣,⍵,⊢)/⍺} ⋄ 'abc' 'def' 'ghi' f 'XX'
 
@Bubbler
┌→────────────┐
│abcXXdefXXghi│
└─────────────┘
<moon-child> I would probably go for a dop there
 
ok thanks, Bubbler. Elias' function is to intersperse a scalar between vector items... which is also useful to know
 
<moon-child> ⋄ ',' {⍺,⍺⍺,⍵}/ 'abc' 'def' 'ghi'
┌───────────────┐
│ ┌→──────────┐ │
│ │abc,def,ghi│ │
│ └───────────┘ │
└∊──────────────┘
<moon-child> ^⊃
 
⋄ A←'foo' 'bar' 'testing' ⋄ ⊃,/¯1↓,(⍪A),⊂'XX'
 
@Elias Mårtenson
┌→─────────────────┐
│fooXXbarXXtestingX│
└──────────────────┘
 
7:02 AM
⋄ A←'foo' 'bar' 'testing' ⋄ ⊃,/¯1↓,(⍪A),⊂'XX'
 
@Elias Mårtenson
┌→────────────────┐
│fooXXbarXXtesting│
└─────────────────┘
<elcaro> i installed dyalog in my linux box, but in the repl I do not see the nice box drawings for vectors or matrices
<elcaro> is that a limitation with the dyalog repl? or am i missing something (btw, this is just tty, no gui)
 
Try ]boxing on -style=max
(and since you're on linux, check out this in case your keyboard layout goes weird)
 
ngn
is there a good excuse for ⍎']box on' not working?
 
It's not part of the language I think
 
<moon-child> )stuff isn't. But afaik ]stuff forwards to ⎕se.ucmd or so
 
ngn
7:14 AM
@Bubbler it's not like you need to install a separate interpreter for it :)
 
@ngn Yes, user commands can return a result, so that would mean things like a[]box on] should work…
Just use ⎕SE.UCMD'box on'
 
ngn
@Adám that should be a[⍎']box on'] obviously
 
@ngn OK, but then ⍎'a[]box on]' should too.
 
<moon-child> that's like saying a[5] ←→ a[5⍎']' ;)
 
ngn
@Adám why should it? what happens when you type a[]box on] in the repl?
 
7:18 AM
@ngn Value error on on, I presume.
 
ngn
@Adám doesn't work:
VALUE ERROR: Undefined name: UCMD
M[8] ⎕SE.UCMD']box on'
         ∧
 
Sounds like you're running session-less. I'd think ]box on doesn't work for you either.
 
ngn
@Adám so if it doesn't work in the repl, it needn't work with , right?
 
Right. is more limited than the REPL, not less.
 
ngn
@Adám that's exactly the reason i was asking about ⍎']box on'
 
7:20 AM
Can I guess that you're running dyalog -s or or dyalog -script or something?
 
ngn
@Adám well, if it's more limited, anything that fails in the session can fail in , including a[]box on]
 
@Joshua elcaro: I always use joinerLength↓∊joiner∘,¨listOfStrings
 
ngn
@Adám yes, the usual #! script
 
@ngn Exactly. So that answers your question, right?
 
⎕SE.UCMD'box on' in the REPL works for me... but it's not persistent
 
7:22 AM
@Joshua Yeah, ngn is using an empty ⎕SE.
 
ngn
@Adám no. it only shows that this statement of yours is false
@Adám is this my fault? i haven't done anything special to disable it
 
@ngn When you run in script or session-less mode, the session is empty. Insert into your script: ⎕CY'salt'⋄⎕SE.UCMD'←box on -s=on'⊣enableSALT
You may want to add ⎕CLEAR too, to start with a clear ws.
 
@Adam @MartinJaniczek I doubt that GPUs will help with bit booleans at this point in their evolution
 
ngn
* Command Execution Failed: invalid value for modifier <style> (must be ONE of "min mid max")
M[2] ⎕CY'salt' ⋄ ⎕SE.UCMD'←box on -s=on'⊣enableSALT
                 ∧
 
@ngn OK, I guess I should have added that evaluates APL expressions; it isn't a "REP".
 
ngn
7:27 AM
@Adám ^^
 
@ngn Sorry, typo: -f=on
 
ngn
@Adám yay, thanks!
i don't understand the reason for this inconsistency between repl and #!
 
@ngn There is no #! ― you made it up!
However, #! is coming soon, and afaict, it will support ]box on too.
 
@Adam @MortenKromberg Advice, please, on good practice (= what you normally do) in RIDE when starting to tackle a problem.
Do you normally create a Namespace in the Editor and then work in that?
 
@RomillyCocking Like in general for any problem whatsoever?
 
ngn
7:33 AM
@Adám #! scripts have been in use for at least 30 years. i didn't make them up.
 
@ngn No, you made them up for Dyalog APL.
 
@ngn but not by WIndows users :)
 
@RomillyCocking I just start experimenting in the session. Then, the first time I lose my work, I remember to Link # when I rewrite.
@ngn You can't blame us for shortcomings in your "implementation" of #! scripts.
 
@Adám I was hoping for a good way of eliminating step 2.
 
@RomillyCocking Personally, I tend not to use scripted namespaces, but use Link to map the code in a namespace to a folder, so that I have one file per function. If I do think a single script will work well, I create it in the editor. But then the Dyalog editor is still my primary editor, VS Code is still playing second fiddle.
 
ngn
7:36 AM
@Adám ok, give me your implementation then
 
@RomillyCocking You could add a startup message reminding you to save your stuff, or you could "turn on" auto-save.
 
Unlike many of the folks in this forum, my "muscle memory" drives me towards the APL editor :)
 
@ngn I just said that it is coming soon. That kind of implies that it isn't publicly available yet, doesn't it?
 
ngn
@Adám will ⎕se be loaded by default when it comes? (regardless of what you think about ⍎']command')
 
@ngn I'm actually not sure.
 
7:39 AM
@RomillyCocking we are still on a long journey towards Dyalog APL considering file based source as the primary mechanism. New users expect it, but the vast majority of existing users still haven't learned to love it and prefer workspaces or home made source code management systems.
 
@Adam I normally just type stuff in the session, and do not use the editor (unless I really need to). In than case, my understanding is that ]link does not know about my code. Am I mistaken?
 
@RomillyCocking Link will pick you your code (not tacit stuff, though) when you create the initial link. After that, you have to tell it to add things using ]add
 
@MortenKromberg I understand that, and accept it completely. I'm just seeking advice about the best way to code with what works now.
 
@MortenKromberg Would it be an idea to allow ]add name←expression ?
 
@Adám makes sense
 
7:41 AM
@Adám I always forget to ]add and then lose my work :(
@Adám It would for me... that would be an easy habit to acquire
 
@RomillyCocking One thing I miss every now and then is auto-save (in whichever form, even a workspace). Interested in that?
 
The current development version of Link will soon (I hope) have a crawler which will catch things that you forget to ]add.
 
@Adám Yes
@MortenKromberg Want a beta tester?
 
@RomillyCocking APLcart to the rescue.
 
This will also allow you to run without a file system watcher, and catch things that the file system watcher might have missed (they can overflow and lose stuff)
 
7:44 AM
@MortenKromberg Will you still need to manually install .Net stuff?
 
Link development is on GitHub, so you should be able to see when this becomes available, but yes.
 
ngn
@RomillyCocking lol
 
We currently do not have plans to include .NET in our installers, but I think we will beef up the help.
But the new Link will not depend on it to the same extent that it does now
 
I loved to use Acre for saving code
 
@Bubbler why the past tense?
 
7:47 AM
Clear help would be better than now, but the installation requirement would still annoying.
Once I know I had to install 3.1, it took me about 30 mins to find out how to install the right version for the distros I use (Linux Mint 18.3 and Rasberry Pi OS)
 
@RomillyCocking OK, I've requested it.
 
@MortenKromberg Simply because it has been many months since I used it the last time
 
@RomillyCocking I apologise for that. We should make it very clear that your OS doesn't matter.
 
and its latest version was not working with the latest Dyalog when I checked the last time.
 
DotNet is one of the things that keeps the Dyalog CTO awake at night. On the one hand, a cross-platform library enables the writing of portable software. On the other hand, this only works if there is widespread adoption or at least no resistance.
 
7:51 AM
@Bubbler Uh oh, what happened? Did you log an issue?
 
I think there was already an issue for that.
 
@Adám Sadly, the OS does matter. The .Net website is a maze of twisty passages, all alike.
That's not Dyalog's fault, it's MS
 
@RomillyCocking Oh, I misread that as you using 30 mins to find out which version of Link to install. But that would have been "2.1" not "3.1". My bad.
 
@MortenKromberg One of the things that SAAS vendors have learned is that there is a very clear and very strong inverse relationship between friction and adoption.
 
@Adám I re-checked now and the relevant issues are all closed.
 
7:55 AM
@Bubbler That was still true two weeks ago. Indeed, having only .Net 5.0 crashed the interpreter, though I think that has been fixed.
 
ngn
@RomillyCocking the big question is why the ability to save files should depend on .net
 
@MortenKromberg Most of the Linux users that I know are still strongly resistant to .Net
@ngn It's the ability to spot changes in the file system (not to save), and of course there are Linux APIs that do that. So you're right, it's not necessary, but it would require Dyalog to maintain a second version of the code to service a market segment that is currently not significant.
 
ngn
right, to watch files, sorry
 
That's a commercial decision, and it depends on the estimated discounted lifetime value of future customers. That's not easy to calculate with any confidence.
 
I don't see it so much as a commercial decision as a search for cross platform tools. What would you think of as an alternative to .NET if you want the same APIs available on Windows, mac or Linux? Or is that simply too much to hope for. As a Windows users accustomed to having a single set of APIs, I find Linux intensely frustrating, because there are so many bewildering options that seem to be in a constant state of churn.
If you are a software engineer, you may find that exciting. But if you just want to [make it possible for your users to] solve problems with a computer, it is intensely frustrating.
 
8:03 AM
<moon-child> many aspects of windows's design are superior to unix's. But I've never thought of coherence as one such
 
@MortenKromberg My point is that there is no zero-install cross-platform solution, so you have to chose between what you do now or have the developers maintain two versions. (Maybe three - I don't know if the Unix API solves the problem on the Mac).
 
<moon-child> libev?
 
@RomillyCocking Not zero install, but that isn't a big deal if the installation is easy. I'm surprised you had problems with .NET, I have just clicked on the button and had it work first time under both Linux and Mac.
 
@MortenKromberg What button? (I.e. what URL got you to a page with a button)
@MortenKromberg It is a big deal even if the installation is easy. SAAS experience I've seen is that requiring users to install something results in losing ~80% of would-be users.
 
I can't even remember. Did a Google, clicked a link, started APL, used .NET (in my case it was a bit trickier because it was a pre-pre-pre-release of APL and it had bugs in it, but all the problems were on our side)
@RomillyCocking I understand that, but having no easy-to-use APIs available means you have no application to install
 
8:10 AM
That was not my experinece on the three occasions that I tried to do it.
 
@RomillyCocking Thanks for the experience report. Has anyone else tried to use .NET under Linux or macOS with success or otherwise?
 
@MortenKromberg I think it would take days, rather than weeks, of development time for someone with the right skills to get ]link working using the Linux API when running. Only you can tell if that would be worth the delay to whatever else they'd be working on.
 
ngn
@MortenKromberg many of us don't want to try
 
@MortenKromberg Most of the people here would either not want to try or find the pain tolerable, This audience is not typical of your non-served market.
 
@RomillyCocking afaik, the Linux and Mac alternatives are very limited compared to the .NET service. E.g. we'd have to set up monitoring of every subdirectory separately rather than one central monitor for an entire directory tree, and quickly set up a new monitor when a new subdir was created, etc.
In essence, we'd have to duplicate the work done for .NET already.
 
8:18 AM
@Adám PyCharm does what's wanted without difficulty.
In Java
 
ngn
12 mins ago, by Dyalog APL
<moon-child> libev?
 
Do people feel better about Java than about .NET these days?
 
Java is just another giant cross-platform framework
 
Doesn't matter. It is close-sourced.
 
@MortenKromberg I was not suggesting you should use Java - just that PyCharm dose what's wanted, effiiciently and transparently, cross-platfom.
 
8:21 AM
and my impression has been that .NET is slowly taking over Java (initially with .NET Core, then apparently .NET itself is cross-platform now)
 
But .NET Core is open-source. Theoretically, one could extract the FileSystemWatcher from .NET Core.
 
From my limited knowledge of inotify I believe it makes it easy to add sub-directories to the watch list when they are created. I know nothing about the Mac.
 
moon-child: Does libev support watching a dir tree?
 
Why libev rather than inotify?
 
We did look into inotify (and FSEvents on Mac) but they are very primitive compared to FileSystemWatcher.
 
8:26 AM
@Bubbler Not with Enterprise customers in Finance, in my experience
And libev isn't?
 
@RomillyCocking if all I was looking for was a File System Watcher, we would not have used .NET. But we are trying to make cryptography, file compression, etc etc trivially available to our users who want to write portable applications.
 
@RomillyCocking First I hear of it. Hence my question. I briefly looked at the docs for it, but it seems to be a package of all kinds of stuff, including "optional linux inotify support". I can't find mention of an enhancement over inotify.
 
@Bubbler I work with financial companies (mostly banks), and I only ever see .net at small banks with low levels of investment in their infrastructure.
It seems to me it's the cheap simple solution when they don't want to pay for developers.
 
 
In general, mostly, language frameworks have becomeless and less important and now all they want is REST interfaces.
 
8:30 AM
@MortenKromberg In other words, you are looking for a low-develpment (for Dyalog) solution at the expense of user experience. That's a commercial decision rather than a a technical one, and I accept that you have mich more data and much more relvenat experience to make that decision that I do.
 
Python and Javascript seems to be very popular too, sadly.
 
@EliasMårtenson I do more development in Python than APL, and I expect that to continue. For most of the things I do, Python is a more efficient tool for me. For what I am doing in AI, APL is much better.
 
@RomillyCocking No, I'm looking for a truly cross platform solution that delivers many APIs to our customers in forms that are easy to use. For Dyalog to cover a variety of constantly changing libraries with wrappers that make them easy to use for APL users would not just be expensive, it would be impossible.
 
ngn
cryptography and compression libs are constantly changing? and they require .net to be used on windows?
 
@MortenKromberg PyCharm does that. Java does that. Python does that.
 
8:34 AM
@Adám as for monitoring a directory tree with inotify, it isn't very hard. You just have to manage the handlers per directory, but it's not much code.
I don't think openssl or libz have had any incompatible changes to their API's for the last 20 decades. The last change I know of was when openssl went from 0.9 to 1.0.
 
20 decades?...
 
RGS
@EliasMårtenson for the last 20 decades? :P
 
Well, libz has never changed as far as I know, and I seem to recall using it in 90's.
 
@EliasMårtenson In fairness, openssl also took ages to fix heartbleed, so their reluctance to change code is not always an advantage :)
@EliasMårtenson That's three decades, not 20
 
openssl 1.0 is only 10 years old. Sorry about that.
 
8:38 AM
As far as I know, there have been significant changes to openssl in the area of supporting certificate stores etc. But of course cost is an issue here. Either Dyalog has to monitor all the APIs that anyone would want to use and keep the nice APL wrappers up-to-date, or we interface to a self-describing framework like .NET and everything it can do is instantly available to all users of APL.
 
@RomillyCocking Oh I see :-)
 
Anyway, the first meeting of the day becons. Thanks for all the opinions!
 
@MortenKromberg Plenty more where those came from :)
Enjoy your meetings
 
@MortenKromberg I'm terribly sorry for disagreeing with you here, but .net is not a monolithic thing. It also changes API's. The fact that all of these separate API's are baked into a single thing doesn't make manging it any easier. You're going to have to deal with the same issues, regardless of whether the TLS incompatibility is introduced by .net or openssl. The same goes for other libraries.
I'd even go as far as arguing that things like libz, openssl, etc are so deeply rooted that they are less likely to change than .net
 
<moon-child> openssl breaks compat all the time
 
8:42 AM
@EliasMårtenson I'm not saying the CONTENT of .NET is necessarily good, only that users of small languages like APL benefit enormously from the fact that the framework is self-describing and therefore we can call anything in it from APL. For all other solutions, we have to hand make a solution for each individual library that we want to make available to our non-technical APL users.
 
@MortenKromberg So your goal is not to create a crypto API using .net, but rather to expose the .net API's directly then?
 
Our Python bridge might be an alternative that we should push harder on, it makes all Python-supported libraries callable from APL.
Our goal is to make all relevant application programming APIs easily available to users of Dyalog APL
The .NET APIs are all quite APL friendly, it is easy to automatically call them and cast arguments in both directions.
 
@MortenKromberg Does it allow importing Python libs written in C (e.g. numpy)?
 
I would like to see a Java bridge in that case.
 
@Bubbler As far as I know, yes: github.com/dyalog/pynapl
@EliasMårtenson We had an experimental java bridge, but it was never rolled out due to a lack of client interest. In the last few years we have not thought much more about it as the perception is Java is fading away.
 
8:52 AM
]LINK.refresh # -source=ns
* Command Execution Failed: NONCE ERROR
How can I force the export of everything currently in the base NS of my WS?
pynapl is not working reliably for me atm, though I have not yet raised an issue because I am trying to create a repeatable failure script
 
@Romilly I will contact you directly to debug the Link problem
 
@Bubbler It used to. I assume it still does once I can get it to work reliably.
 
ngn
9:07 AM
for future reference, i'm changing my *.dyalog template to:
#!/bin/bash
dyalog -script <(echo ∇M;tail -n+3 "$0";echo -e '∇\nM\n⎕off');exit $?
⎕←⍬⋄⎕io⎕pp⎕pw←0 34 32767⋄{}⎕se.UCMD'←box on -s=max -f=on'⊣enableSALT⊣⎕cy'salt'
if anyone can think of improvements, pls let me know
 
@MortenKromberg did you get my email re: the mac platform?
 
9:26 AM
@RomillyCocking What is ⎕SE.Link.Version?
@ngn If a function uses ⎕← to output, do you want boxing on for that too?
@ngn If you output a tacit function, do you want boxes or maybe treeview or a fully parenthesised one-liner definition?
 
@Adám Morten and I are working on the problem out of band.
 
@RomillyCocking How will others benefit from your eventual solution then?
 
Because we will share a solution when we find one
 
(Full disclosure: Many problems can be fixed simply by upgrading to the latest version)
 
@Adám Not this one.
 
9:33 AM
I wouldn't know without knowing your Link version :-)
 
@Adám Morten has tried the latest version from master
 
ok
 
I should leave us to it.
@Adám I had one tacit fn in the ws, which I guess generates the nonce error:(
(I had forgotten about it)
And my problems with pynapl were also my fault.
It now works fine for me.
I'm off to breakfast, followed by some beta-testing with Morten.
 
ngn
9:58 AM
@Adám i think so. if not, i can use ⍞←
@Adám ⎕← is my debugger :D
 
same
 
@ngn I figured. do box on -s=max -f=on
 
ngn
@Adám i don't mind tacit func display either way
@Adám yes, that's what i did
 
oh
 
ngn
round-tripping output would be even nicer. i'll try to find that incantation again..
found it by searching for "incantation" (and reading the next few msgs) :)
 
10:06 AM
@xpqz Yes, thanks a lot. It will be a week or two before the wheels grind round to it. Feel free to poke me in 2 weeks to ask whassup.
@Adám The Link trunk is able to export the workspace in question with the exception of one tacit function.
 
ngn
@Adám what role does the before box play there?
 
I am about to start work on a Link tutorial. Anyone keen on playing with Link is welcome to play with the new Link and complain or ask me direct questions about it. To get hold of the new Link, which will be shipped with Dyalog 18.1...
git clone the dyalog/link repo to /some/folder
set DYALOGSTARTUPSE=/some/folder/Link/StartupSession before starting APL
replace the file SALT/Spice/Link.dyalog (which defines the Link user commands) in your Dyalog installation with /some/folder/SALT/SPICE/Link.dyalog
Do the last thing first, you may also need to do a ]ureset after replacing Link.dyalog to make sure the UCMD system has picked up the new user command definitions.
 
ngn
10:23 AM
@ngn on my netbook salt takes a whole second to start :(
 
Those instructions were not quite right
set DYALOGSTARTUPSE=/some/folder/StartupSession before starting APL
(without the Link)
 
@Adam so it wan't just upgrade to the latest version. You have to cast the runes as well.
Thank goodness this stuff is difficult. If it were easy they'd all be doing it :)
@ngn You deserve a better netbook. (That's sadly not an offer)
 
ngn
10:41 AM
@RomillyCocking i've got one but the power cable burned through and it's taking too long to get repaired
 
@ngn Sympathy. That's a pain.
 
@RomillyCocking Fortunately, the new version of the Link user command cover now gets all the information it needs from the installed version of Link, so that extra step should not be required again. In the past, the user command was separate from Link itself.
 
That's great news, but I am already happy.
 
RGS
11:03 AM
@Adám I remember you once shared your Dyalog interpreter dark theme with me, but I can't find it and I need it because I just updated Dyalog APL.
 
@ngn Let me know if you need help setting it up so output uses that incantation instead of boxing.
 
RGS
Could you send it again, please?
 
@ngn Nothing, it just silences the report, but you already added {}
 
RGS
@MortenKromberg Your instructions and the ones you linked to don't seem to match..?
 
ngn
11:26 AM
@Adám ah, i see. i added {} because it was printing a boxed but now i realise it was because i moved ⎕cy'salt' to the right of the ucmd
 
@RGS Can you be more specific? I believe they should be more or less the same as the section titled "Standard Installation", except with v18.0 and later you no longer need to update startup.dyalog.
That would only be required for earlier versions than 18.0.
 
RGS
You mention setting DYALOGSTARTUPSE but the instructions linked do not.
 
ngn
@Adám i'm sure i've seen this somewhere in chat but i can't find it
May 7 '20 at 11:26, by Adám
⎕SE.(⎕WS'Event'(2⍴⊂⎕FX,⊂'SessionPrint←{⎕←Dyalog.Utils.repObj⍺}'))
found
 
cmc: io independent matrix diagonal without using ⎕IO
 
RGS
@rak1507 You want to extract the main diagonal from a matrix, is that it?
 
11:37 AM
yeah
 
RGS
can I assume the matrix is a square matrix?
 
alright
bonus points if you don't though
 
@RGS ah, sorry, moving a bit too fast as usual. I think the instructions tell you to overwrite Link inside the Dyalog installation, while I am thinking all you cool kids will want to clone the repo outside the Dyalog installation and therefore need DYALOGSTARTUPSE to redirect to that.
 
ngn
@rak1507 9 bytes in k: {+/x*=#x}
 
nice
time to decipher that
 
11:42 AM
@ngn +1
 
oh, =#x produces an identity matrix somehow
 
ngn
@rak1507 the only tricky part is monadic =
 
well that's less cool
yeah
 
(That's a vote, not a correction)
 
having an identity matrix builtin is kinda cool
 
11:43 AM
1 1⍉x
 
depends on ⎕IO
'io independent'
 
RGS
{w/⍨(⊃i)=i←(1+≢⍵)|⍳≢w←,⍵}
Far from optimality and assumes a square matrix. Dropping that restriction shouldn't be too hard.
The ⎕IO-independence is achieved with the (⊃i)= bit.
 
ngn
@rak1507 ⊣/⊢⍴⍨0 1+⍴
 
So I can't just pop into discussions and only read what is immediately visible? :D
 
RGS
@ngn Clever
 
11:45 AM
nice
That's similar to what I was thinking, I was trying to reshape but didn't do it properly
 
RGS
But @ngn's behaves poorly on matrices with more rows than columns :/
 
⊢/ is nicer than 1⌷⍉
oh true
 
RGS
{(⌊/⍴⍵)↑w/⍨(⊃i)=i←(1+≢⍵)|⍳≢w←,⍵} for arbitrary rectangular matrices :P
 
⎕io⎕io∘⍉ :p
 
ngn
{⍵[⍸=/↑⍳⍴⍵]} then?
 
11:48 AM
@dzaima cheater!
 
ngn
@dzaima haha :)
 
x⍉⍨⊃⍳1 1
 
⋄ ⎕IO←1 ⋄ f←⎕io⎕io∘⍉ ⋄ ⎕IO←0 ⋄ f 5 5 ⍴ ⍳25
 
@rak1507 RANK ERROR
 
@dzaima your code breaks if someone changes IO
 
11:50 AM
@rak1507 true
 
{⎕IO⎕IO}⍉⊢ works fine though
 
RGS
There should be two leagues for when someone poses these CMCs.
 
wdym
 
ngn
@rak1507 morten's is the same byte count and forever io-independent
 
RGS
@rak1507 I mean, look at all other suggestions and then compare with mine :P
 
11:51 AM
right, but it relies on non IO independent code as a way of generating stuff so I don't like it very much
I should've put that in the cmc
@ngn half of the time in ngn/k I can't tell if something's a weird output or an error! would it kill you to put the word 'error' in your error messages lol
 
ngn
@MortenKromberg ⍳1 1 -> ⍸⍪1
 
that's nice
 
ngn
@rak1507 ' marks errors. i'm considering changing it to ! because it's more suggestive of something needing attention
 
@ngn cool
 
Ah ok
 
ngn
11:54 AM
"error" is too long by k standards :)
 
yeah, far too many characters
 
what does ed do? ?
 
ed?
as in )ed?
 
as in unix ed
 
oh
 
ngn
11:55 AM
@rak1507 btw ngn/k starts in 10ms on the same slow netbook i use (salt takes ~1s)
 
isn't it a text editor
@ngn nice flex
 
yes but when there's an error it just prints ?
 
ngn
@MartinJaniczek you haven't heard of ed?!
 
> The GNU project has numerous jokes around ed hosted on its website. In addition, an error code called ED is defined in glibc: when asked to print out its description (errorstr), the library returns a single question mark. The documentation is simply "the experienced user will know what is wrong."[10]
 
oh, never mind, I massively misread your message
I read the second question mark as part of the first, like what does ed do??
 
ngn
11:56 AM
@MartinJaniczek ah :)
 
sorry :) it was ? in markdown but I should have been clearer
 
@ngn that's only a 100:1 ratio between ngn/k which does approximately nothing, vs salt which has a ton of contents. I expected at least 1000 if not a couple magnitudes more
 
no problem, my bad
@dzaima approximately nothing, ouch! poor ngn :(
 
ngn
@dzaima .. vs salt which does many things it shouldn't be doing
 
@rak1507 it's a compliment :)
 
ngn
11:57 AM
@rak1507 i take pride in not doing unnecessary things :)
 
fair enough
 
ngn
this reminds me of the joke about the damsel in a castle (i've heard it from scholes)
 
I've not heard it before
 
ngn
if apl was a prince what would it do? it would save everyone from every castle and then discard the non-damsels
2
what would j do? it's a builtin
what would k do? it would arrange things so that the damsel doesn't need saving in the first place
(end of joke. laugh here)
 
that's good, do you know who came up with it originally?
 
RGS
12:00 PM
:P
 
ngn
@rak1507 idk
@rak1507 i found this in an old email, mentioned as the original
 
Ah yeah, probably an extension
 
ngn
@ngn in ngn/apl you can redefine the meaning of "saving" the princess :)
dyalog can save the princess through any platform in the castle but it strongly prefers windows :)
aplx kindly asks all princesses to refer to dyalog on matters of saving
codfns first moves the princess to gpuland, saves her there, and brings her back near the castle
i can't think of good jokes about the others
 
12:21 PM
GNU APL hasn't heard of any princesses that needed saving, living as a hermit on an isolated island? :)
 
ngn
@MartinJaniczek good joke, but i'm not sure. i think they have some users..
 
@MartinJaniczek ... but corresponds with Donald Knuth on their latest and greatest, "dancing links" ⎕DLX way of saving princesses, just in case
 
Q saves a million princesses per second
 
@RGS Gist
 
ngn
@rak1507 as long as their fathers can afford it :)
 
12:26 PM
why didn't I think of that
I can't really think of any other APL-y things :(
 
ngn
@rak1507 dzaima/apl, kap, bqn, ..
 
KAP only saves princesses as and when they're needed? idk, lazy evaluation joke? ¯\_(⍨)_/¯
 
@ngn Fails on ("abc";"def";"gds")
 
@rak1507 KAP only saves princesses as their fathers start searching for them in their chambers. before that, only a thunk can be heard from behind the closed doors
 
ngn
@Adám right, it assumes the matrix is numeric, probably incorrectly
 
12:30 PM
something like that
 
(I hope KAP talks about unevaluated stuff as thunks :) )
 
dzaima/APL allows saving princesses on mobile as well
 
ngn
@Adám showing off the new "deep where": {(x').&=#x}
 
^ was about to say
 
@rak1507 that's assuming dzaima/APL can even save princesses and dzaima doesn't think doing that is stupid & pointless
 
ngn
12:36 PM
 
lol
dyalog APL has a super secret princess saving feature built in to the interpreter that no one knows about
 
@dzaima (huh, 2% of my chat messages contain at least one of stupid, awful, hate, pointless)
 
ngn
@rak1507 kill⍣¯1⊢princess :)
2
 
haha
 
@rak1507 there's a model for saving a princess which will be presented at the next year's conference
 
12:38 PM
by numerical methods it saves only one of the princesses, and that will have to do
 
ngn
mr guillotin from the french apl group implemented a new algorithm for dealing with princesses
 
00:00 - 13:0013:00 - 23:00

« first day (1450 days earlier)      last day (1222 days later) »