« first day (624 days earlier)      last day (2037 days later) » 

1:30 AM
where do I get to be a "veteran" developer in one of these?
 
Well, develop something? :P
 
they're way more interesting and fun to use than any plebeian language
 
Lol
 
I mean, they're all super licensed, so what can I really develop without being hired to do them? That was more my question
 
Oh, you want to work on developing APL/J/K type languages specifically? Well I have no idea
Create your own! :P
 
1:33 AM
haha. that would mean I have at least one good idea, and that I have the knowledge and/or skill to pull off that rumored idea in one of these languages
last I checked, j was unstable, as I couldn't perform basic system IO due to some bug in a release branch. And in calling and talking to some sales rep at KX, there is no historic/unlicensed K3... which leaves gnu APL I guess?
I haven't the faintest understanding if kona is a reliable, optimized release, and the thing about k/q that interests me is its first class tables anyway.
so I'm not sure if kona would cut it for real business applications. these are all things that I don't know.
 
1:46 AM
but what I DO know is I'd prefer to use APL, its descendants or Lisp and its descendants professionally over any other programming languages. The question who is hiring to use them and how good to you have to be with them to be hirable?
 
 
2 hours later…
3:24 AM
where are all the apl string functions? or are all the apl string functions just idioms that I have to memorize?
 
3:52 AM
is there a synonym to monadic { in J? catalogue?
i think I've discovered a similar idea.

hex←'012345689abcdef'
{hex[⍵]}¨⍳2 16
but in J, I could do up to ⍳6⍴16 no problem. dyalog is crashing when I attempt to evaluate this.

J code for {hex[⍵]}¨⍳6⍴16
{6 #<'0123456789abcdef'
works pretty quickly. is there an optimization for large arguments to ⍳?
smaller example
⎕←{{chars[⍵]}¨⍳6⍴⍴⍵}'ab'
 
4:38 AM
@nathanrogers If you want "in" at a developer of an APL, I can offer you two places to start: Apply for an internship (careers@dyalog.com) at Dyalog, or for an apprenticeship with Steven Taylor to help him working on Vector while being taught kdb+.
 
what is Vector?
 
@nathanrogers Click the Vector link on Steven's profile!
 
@Adám do you have a quick answer, link or etc for reference to string idioms/functions?
 
@nathanrogers I guess ⊃∘.,/ but yes, it is (like all other Dyalog APL code) limited to 15 dimensions. Instead, you could flatten as it goes along with ⊃(,∘.,)/.
 
and perhaps datatypes that aren't Vectors? such as tables/hashtables/trees etc
 
4:47 AM
@nathanrogers APL has no strings, only character vectors. What operations do you have in mind?
 
typical things, strip, split-on, replace, upcase, downcase, includes/contains
 
@nathanrogers Tables are matrices, as APL allows rank above 1. And code generally applies to higher-rank arrays too, so no special functions are needed. You can always use to specify how you want a function applied to higher rank.
 
like " in J I'm assuming
but I'm failing to use ⍤ very successfully
 
@nathanrogers Yes, they are exactly the same.
 
in J, first 16.7mil sequential mac addresses
'000000',"1>,{6#<'0123456789abcdef'
I'm trying something similar with (,⍤1)
and instead of prepending the 0's to each item to the right, it's prepending it to the full list
perhaps the zeros need to be boxed in APL
 
4:52 AM
each item is rank 0
I see what you mean
 
,⊃(,∘.,)/6/⊂'0123456789abcdef'
ws full
@Adám boxed char vectors are ≡ strings?
the nature of char vectors is why I'm having difficulty interacting with them
I don't understand the nature of the search functions which would allow me to derive the correct functions for manipulating them
it'd be nice in 2018 to have first class strings
 
⍞←(⊂'00'),¨ ∘.,⍣2⍨'ab'
 
@FrownyFrog  00aaa  00aab
 
so ⍞ cuts after the first line
makes sense
maybe
 
@Adám also, I'm not finding the apprenticeship you were referring to on the careers page
 
5:02 AM
@nathanrogers I'll get to answering your questions, but a bit later. Have to get out of the door…
 
thanks!
 
5:59 AM
@nathanrogers Not identical, but behave pretty similarly. E.g. you can't use = to compare two enclosed charvecs, but have to use . However, to compare two lists of charvecs, you need ≡¨.
@nathanrogers gives a 1 everywhere where begins in :
⍞←'ss'⍷'mississipi'
 
@Adám 0 0 1 0 0 1 0 0 0 0
 
Does charvec contain the substring ?
⍞←∨/'ss'⍷'mississipi'
 
@Adám 1
 
@nathanrogers We've discussed that internally. Last time was this past spring. We concluded that it would overly complicate the language for too little gain. However, we will probably soon add "magic arrays" which are like classes, but behave like arrays and let you define primitives for them. That'll let you make your own strings.
@FrownyFrog Yes. Just use ⎕← to see the entire result.
@nathanrogers Split-on is char(≠⊆⊢)string and includes/contains is sub(∨/⍷)string. You can fold case with case(819⌶)text (0=lower; 1=upper). Replace and/or strip using ⎕R. In general you can use ⎕R and ⎕S for powerful regex based operations, although a clever APL formula may be faster.
@nathanrogers Strip←{(∨\' '≠⍵)/⍵}∘⌽⍣2 is probably a lot faster than Strip←'^ *| *$'⎕R''
 
7:05 AM
@nathanrogers Internship? Right, just send an email saying you're interested. Tell them what who you are, and what background you have. You may say I sent you if you wish.
 
 
4 hours later…
11:35 AM
@Adám How does that fold case expression work? I don’t think I’ve seen that symbol before
 
@Quintec provides some system related services (originally used to get services from IBM, hence the I-beam symbol — get it?) e.g.:
⍞←819⌶'Hello World'
 
@Adám hello world
 
⍞←1(819⌶)'Hello World'
 
@Adám HELLO WORLD
 
@Quintec You can optionally supply a left argument 0 for lowercase:
⎕←0 1∘.(819⌶)'Hello World'
 
11:38 AM
@Adám
hello world
HELLO WORLD
 
12:00 PM
Cool, thanks :)
 
 
1 hour later…
1:07 PM
interesting. kdb does -x!
now i know why !
 
1:28 PM
@AttilaVrabecz Does what?
 
1:40 PM
system related services
 
Question: How do you convert base 10 to binary as short as possible? It seems that requires a variable number of 2's as left argument based on the magnitude of the right argument, so you would need the log function?
 
2:02 PM
@Quintec 2(⊥⍣¯1)num
 
Ah, that operator, cool, thanks
I don't understand any of the diaresis operators besides each and commute, lol
 
@dzaima @Quintec 2⊥⍣¯1⊢num is a byte shorter
 
@Quintec repeats a function. Here I'm repeating negative one times, i.e. inverting it. This is asking "for what res is num equal to 2⊥res?
 
@Quintec (f(⍣ x)arg)applies the fn f to arg x times
if x is negative it does what dzaima said
never tried using ⍣¯2 though, does it apply the inverse of the function twice?
 
@J.Sallé yeah
 
2:07 PM
I understand the concept, though I guess precedence and such is iffy
does (f ⍣ ¯1) return a new function?
 
@Quintec yeah, a derived function
what I find interesting is that (({1+⍵}⍣¯1)⍣¯1) ⊢ 4 returns 5, even though dfns can't be inverted
 
@J.Sallé Still don't completely understand tacit - why is ⊢ needed here?
 
@Quintec it separates 2 from num, that's all
otherwise that'd do 2⊥⍣(¯1 num)
 
^ what he said
 
Ah, gotcha, thanks.
 
2:11 PM
practically, 2⊥⍣¯1{⍵}num works too (since is {⍵}), or for that matter, 2⊥⍣¯1{num}4 2
@Quintec doesn't imply tacit, as {⍵} doesn't either.
 
Well, train then?
Things I will never understand fully in life: girls and tacit APL
 
@Quintec nope. Tacit and whatever comes in effect when the end of an expression (a line, before an ending parentheses, ect) is a function, instead of an array
 
So what would you call this then?
(And what would an example of tacit be then?)
 
@Quintec a regular function..
 
Oh lol ok
 
2:16 PM
for real number arrays 2⊥⍣¯1 +num works too
just that I don't want to conjugate, I want to do exactly nothing, for which fits perfectly
 
Wait, but isn't the end of this expression a function? ⊥⍣¯1⊢
 
@Quintec yeah, but the expression doesn't end there. You have an array following it
 
So what would tacit be then? Don't tacit expressions have arguments too?
 
@Quintec a tacit function would match regex someFunction[\n)}\]]
(+/÷≢) is a tacit function, since the thing before ) is a function.
So (+/÷≢) is a function by itself, which is defined as {(+/ ⍵) ÷ (≢ ⍵)}
 
Oh, but this function isn’t a function by itself?
Why not
 
2:21 PM
@Quintec it is
 
I’m lost
 
@Quintec oh if by "this" you meant 2⊥⍣¯1⊢num, that's a regular expression, not touching tacit in any way
 
2:45 PM
@Adám on the subject of new things overcomplicating the language, has there been any discussion of an APL 3.0 that uses modern available unicode, and simplifying APL idioms?
 
@nathanrogers Why 3.0? And how are you going to fit even more chars on a keyboard?
 
simple. an ide
 
@nathanrogers Modern available Unicode? We do add new features that greatly simplify constructs, and we are (and are planning on) releasing libraries for various things, including string operations.
 
I use latex symbols in visual studio code by simply typing the names of things
 
@nathanrogers Wait? You don't use an IDE?
 
2:47 PM
no I'm saying it'd be simple enough to make any and all available unicode easy to type.
 
@nathanrogers that takes a lot more time to type than APL chars
 
if you think about it though, you aren't exactly power typing apl characters. most of the time I'll bet you're just looking at what you wrote trying to decide how best to continue
 
@nathanrogers IMO idioms are way easier to remember from the small amount of chars APL has than remembering way too many chars
 
\io<tab> is fine
 
@nathanrogers We have quite a variety of input methods.
 
2:49 PM
that's fine. I'm not complaining about input methods. I'm also not complaining about lack of symbols. I'm just wondering if first class strings and string methods are to convoluted, why no go back to the drawing board
APL 2.0 has been around since, what, the 70's?
and in particular, there are so many "filter a list" idioms, that it'd be sensible to have a filter function=
 
@nathanrogers Like / ?
 
@nathanrogers I do think there should be more string functions, but not in the form actual string objects. At least in APL, IMO what works on strings should also work on number arrays and array arrays in exactly the same way
@nathanrogers ok that I can agree with, combining with the fact that / can't be easily used in trains
 
like / but simpler.

instead of a (~2|a)/a
do ~2|/a
or something to that effect
 
@dzaima Well, if becomes atop: ⊢⍤/.
 
especially since many times where a is declared inline
 
2:51 PM
@Adám that's still 3 bytes
 
also, using the real negation symbol, instead of ~
 
@nathanrogers ?
 
@nathanrogers Just is a real logical negation symbol:
In logic, negation, also called the logical complement, is an operation that takes a proposition P {\displaystyle P} to another proposition "not P {\displaystyle P} ", written ¬ P {\displaystyle \neg P} (¬P), which is interpreted intuitively as being true when P {\displaystyle P} is false, and false when P {\displaystyle P} is true. Negation is thus a unary (single-argument) logical...
 
I can't say I've ever seen it outside of APL. news to me
 
ngn
2:54 PM
@nathanrogers in dyalog's RIDE (remote IDE) you can type two backquotes followed by the name of a thing and it will turn into a squiggle
@Adám I think Attila means the k equivalent of I-beam
 
I'm becoming more familiar with the keyboard, so that isn't really the reason for my questions. It's just that APL, as a newcomer feels like a language from the 60s. Like common lisp vs scheme
 
@nathanrogers Just write your own filter operator: Filter←{(⍺⍺ ⍵)⌿⍵} so you can write (~2∘|)Filter a
 
@Adám filter (along with split & sort) feel useful enough to be actual primitives instead of being user-defined functions
 
@nathanrogers well, APL is a language from the 60s. Dyalog just does a great job at updating it
 
@dzaima Split as in (≠⊆⊢)? Both are 5 chars, and it is an oddly specific and limited function.
 
2:58 PM
some things that'd be great for APL to feel modern, first class strings, operators that work on characters, like grade up or sorting in general, comparisons that work on characters and strings, functions that are purpose built for the new first class strings, operators who simplify existing idioms, using more modern and visually explanatory symbols instead of anachronistic symbols (for example, a special r for remainder instead of pipe which typically means filter or the like...)
but really I'm just thinking out loud
 
@Adám That split is a strange split, as it doesn't ever have empty portions in the output
 
are there hashtables in APL?
 
ngn
@Adám that splits only on a single-char separator
 
@dzaima @ngn Yeah, but sometimes you one this, sometimes that. It is pretty easy to write exactly what you want — in APL.
 
for example, the symbol for cross product is now a unicode symbol, so ∘. is no longer necessary to be separate.
 
3:00 PM
@nathanrogers That's outer/Cartesian product.
 
@Adám this feels way too long for a "correct" split
 
@nathanrogers yes, but you need to be ⎕USING←'System.Collections', then you can make a ⎕NEW Hashtable
 
@nathanrogers All non-computation functions (and operators) work on characters. We do have grade up (now for all arrays), and sorting is 4 or 5 chars (though indexing is a bit awkward, but I have an idea which would make sorting just 3). Comparisons work on characters. We don't need a string class, though you can use .NET string objects or soon make your own.
@dzaima @nathanrogers As mentioned, we are working on a string library.
 
ngn
⎕←'a'<'b'
 
3:03 PM
@ngn
DOMAIN ERROR
 
@nathanrogers APL uses hash tables internally, and you can also ask it to do so. You just don't need to deal with the gory details yourself. Same goes for data type conversions.
 
how so?
 
@ngn Because that just isn't meaningful, though I guess we could do so with TAO.
 
it is for alphabetical sorting and comparisons
 
ngn
with unicode "alphabetical" is rather ambiguous...
 
3:05 PM
@nathanrogers Have a look here and here.
Gotta go. ○/
 
@DyalogAPL o.O That I did not expect..
 
ngn
@Adám in your case ⍝/ (payos) ;)
 
Personally I feel like first class strings aren't a solution either, as I could see splitting 1 2 0 4 0 0 7 on 0s being useful too. APL is about generalizing, not specializing
 
3:16 PM
@ngn Looks like a girl with long hair :-)
 
ngn
@nathanrogers the pipe for remainder is not anachronistic, in mathematics x|y means "x divides y"
 
not in computing
 
@nathanrogers So what? APL is a mathematical notation which happens to be executable. If you look at it like that it makes much more sense than if you compare it to common programming languages. Do you also suggest that traditional mathematics get updates with "modern" symbols and specialised functions?
 
no I'm suggesting that APL use mathematical notation for math and computing notation for computing
 
@nathanrogers That is an unhelpful and unnecessary (and impossible) separation.
 
3:21 PM
its really just my musings as to where I'm getting stuck in my learning, not a criticism. and you're probably right, it maybe is unhelpful
to me, seeing something like ¬2r|⍳10 to filter even numbers of a list reads better
because | has similiar connotations in other contexts, and r is often uses as remainder in mathematiccs
oh, that was something else I meant to mention in my previous list, being able to define operators. using symbols instead of with names. allowing users of APL to create their own DSL withing APL would make it feel more modern
instead of ({~0=2|⍵}¨a)/a←⍳10
¬2r|⍳10
i mean, I'm the new guy, so I still have a lot more to learn before my critique is worth anything :P I have yet to write anything substantive in APL/j/k aside from simple code challenges. like the mac address question from yesterday.
 
@nathanrogers ngn/apl lets you do that, but Dyalog has decided that it is more important that the symbols are universal and constant.
@nathanrogers You'd still need (¬2∘r)|⍳10 (though you could remove the if r was an operator.
 
which reminds me, the workspace size is too small for generating the first 6 columns of a macaddress number. how can I either increase the workspace size, or optimize the algorithm?
J is almost instant. {6#<'0123456789ABCDEF'
but ⊃∘.,/6/⊂'0123456789abcdef'

WS FULL
I tried reducing the dimension, but to no avail
 
@nathanrogers What platform are you on? (Setting the environment variable MAXWS=2G may work in either case.)
 
windows10 64-bit
undefined name G
 
ngn
@nathanrogers which challenge is that? sounds familiar, I think we tried to solve it in this chatroom once
 
3:31 PM
@nathanrogers Go to Options > Configure > Workspace > Maximum workspace size: 2G
 
this wasn't a challenge, it's something I did once in python that seemed to fit the nature of K when I was learning that, so I figured out how to do it in j and k
j is super fast
 
⍝/
 
⍤/
@ngn I had to generate > 2.5 million mac address sequentially
'000000',"1>,{6#<'0123456789ABCDEF'
 
@nathanrogers "allowing users to create their own DSL would make it feel more modern" sure, it'd be a very nice feature, but IMO that'd be a huge bonus, but not nowhere near a requirement to be modern.
 
hence that expression
 
3:33 PM
I like that APL is so inclusive it has people with long hair \⍝/, short hair \⍤/ and no hair (which is my case) \∘/
 
ngn
@nathanrogers see here for a very similar challenge - generate all #rrggbb colours
 
that workspace thing in the menus isn't working
:47131400
 
@Adám how about RIDE?
 
ngn
@nathanrogers as Adam said, my apl impl in js treats non-letter unicode chars as single-char identifiers: example
 
does anyone else know how to increase the WS size?
i'm using dyalog
 
ngn
3:41 PM
@dzaima RIDE is remote - you have to export $MAXWS on the machine where the interpreter is before you run it
 
:O
⍤ what does that mean?
 
@ngn "before you run it" yep "WS FULL" is the worst error in Dyalog
it should definitely be increasable dynamically, or at least in RIDE itself..
 
ngn
@nathanrogers sorry, i was replying to older messages, it turned out a little messy... if you press the leftward-pointing arrow at the beginning of a message, it should take you to the message it's responding to
... or just hover, and the previous message will be highlighted in grey if it's in view
 
wow I don't know what that means
what are we referrring to?
 
@ngn so I can't use that default "Dyalog APL" application that comes with RIDE and have to either start the interpreter from RIDE or from the command line. Very bad design :|
 
ngn
3:48 PM
@nathanrogers so, to use a larger workspace, you need an environment variable MAXWS=2G (or however much memory you need). Do you know how to set an environment variable?
 
ngn
@nathanrogers let me google it... techjunkie.com/environment-variables-windows-10
 
oh, actual environment variables
 
@Adám yeah, figured it out (as per above). Makes the "Dyalog APL" application that immediately starts Dyalog useless though
 
3:51 PM
not apl environement variables
 
ngn
@dzaima if you're starting the interpreter yourself (as Adam showed ^) you can set the MAXWS
 
how do you find that windows?
 
@dzaima It does increase dynamically. MAXWS just lets you set an upper limit on how much it will dynamically expand to. Feel free to set it to your actual RAM amount if you want.
 
ngn
I always thought the whole concept of a workspace is rubbish...
 
@Adám still it should be (way) easier to configure
 
3:53 PM
how do I find that context menu?
 
@dzaima Not useless, it is just a quick-start with defaults (although I do think you can edit the defaults), but I think RIDE installs a "RIDE" shortcut too, which takes you to the connect screen.
@nathanrogers Try File > Connect…
 
I don't have connect
I don't know what ride is
I'm just using the dyalog repl/editor thing
 
@nathanrogers then maybe 2G is still not enough space for whatever you're doing
 
@nathanrogers Wait, if you are using the regular windows IDE, just do Options > Configure > Workspace > Maximum workspace size, then restart APL.
 
I don't see that
 
3:56 PM
@J.Sallé It is, I just tried it here.
@nathanrogers Don't you have an Options menu?
 
yes, but i get there, it looks like a list of files
 
@nathanrogers And below the list?
 
C:\Users\lambd\Documents\Dyalog APL-64 17.0 Unicode Files
etc
Workspace search path
that's all
 
nope
maybe its noncommercial?
 
3:59 PM
@nathanrogers No, they are all the same, but what version are you using? Enter #⎕WG'APLVersion' in the APL session.
 
@nathanrogers I'm using 16.0 non commercial atm and I have that
 
17.0.33947.0 W Development
oh I see
the window is clipped at the bottom
so I'm not seeing the full window
but then I can't click and drag to make it larger
 
@nathanrogers Oh, maybe a scaling problem. Please email support@dyalog with a screenshot and write your screen resolution and GUI scaling factor.
 
where is gui scaling factor?
 
@nathanrogers Clearly a scaling bug. Meanwhile, edit the registry: Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Dyalog\Dyalog APL/W-64 17.0 Unicode\maxws
@nathanrogers Right-click your Windows desktop, select "Display settings" and look below "Scale and layout".
 
ngn
4:03 PM
lol :) it may be simpler to tab-tab-tab (enough times) or press alt-s to get to that field
 
@Adám lol I had that exact same problem at work the other day. One of our clients called support because they couldn't find an option in one of the menus, turns out our product wasn't handling their screen resolution properly
 
@nathanrogers Also, can you include your settings at Options > Configure > General > "Enable DPI Scaling of the interpreter…" and "Enable DPI Scaling of GUI application"?
@J.Sallé Yeah, it is really hard to get right. Even Windows' own GUI struggles with scaling issues at times.
 
@Adám exactly. One of my team's members was assigned to fix that and it took her like a whole day to make everything work properly
 
support@dyalog.what?
 
@nathanrogers .com
 
4:08 PM
i changed those other settings and had no effect
 
@nathanrogers Meanwhile, use the following "maxws.reg" file to change the setting. Just edit the 256M, save the file, and double-click on it:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Dyalog\Dyalog APL/W-64 17.0 Unicode]
"maxws"="256M"
 
well I've done that
set it to 8G
still ws full
:(
T_T
 
@nathanrogers Did you restart APL?
 
@nathanrogers What does ⎕WA (in the APL session) return?
 
4:14 PM
@Adám yeah, RIDE is there too, it's just an annoying indirection to getting Dyalog started. There does seem to be ~/.dyalog/dyalog.config, but that again is an annoying thing to put upon a newcomer who just wants to store 10 million numbers
 
267151344
 
@nathanrogers That's 256M, so the change didn't take effect.
 
hrm
i've saved it as .reg
the maxws=8G
and I save and double click, it prompts me "do you want to do this" etc, and I click ok
restart dyalog
 
@nathanrogers maybe have dyalog off while executing?
 
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Dyalog\Dyalog APL/W-64 17.0 Unicode]
"maxws"="8G"
ws full
just tried it with dyalog closed
 
4:20 PM
@nathanrogers Hm, doesn't work for me either.
 
i tried scaling the settings in windows
nada
 
@nathanrogers There appears to be some issue with that setting (oddly enough, because I've changed mine before), because now for me, even changing it in the GUI has no effect. Very strange. I'll take it up with the appropriate colleague tomorrow.
 
thanks
i've sent the emails. with screenshots, but combinations of altering those settings doesn't adjust the dyalog ui at all
 
@nathanrogers Thank you so much. Sorry for this confusion.
 
its alright :)
just glad that it isn't a language limitation
I wasn't sure if maybe there was some trick optimization to it
 
4:45 PM
which of the (scalar) functions should I use for the size/length of a (hash)map?
 
4:59 PM
@dzaima What? You're overloading arithmetic functions for a special type?
 
@Adám what would you suggest for a length built-in then?
 
@dzaima What do and do?
 
dot-notation won't do because it's already used for key access/setting
@Adám would give , as for any other scalar; = 1
 
@dzaima Ah, it is like an object. JD has an idea about a "meta-dot" for such purposes.
 
@Adám yeah, it's a regular scalar alike numbers & chars, so can be put in arrays
 
5:03 PM
He calls it ToE, Theory of Everything. So instead of loads of -fns to get info about things, you'd use the special dot to access a tree of info about the object.
Thingy⏺Length
≡⏺IsPrimitive
 
a single character feels much nicer & more APLy though
@Adám okay maybe not for that
 
@dzaima How about ⍴⌷MyMap?
 
@Adám oh that could work, but without fancy idiom detection that'd also be pretty inefficient. You've solved a different question of mine though :D
 
      ⎕USING←'System'
      s←⎕NEW String(⊂'Hello')
      ≢s
1
      ≢⌷s
5
 
5:56 PM
So for values, × for "has items" (should I have ~ for "is empty"?), and I chose | for length (because 2 chars is too long). Next, keys, and entries (key-value pairs). Forgot that those two need to exist D:
 
@dzaima I think should give key-value pairs (or maybe a two element vector of keys values). You can use 9○ and 11○ for keys and values respectively, if ⊃⌷ and ⊃⌽⌷ bother you.
@dzaima Do you have a way to combine a list of keys and a list of values (or a list of key-value pairs) into a map?
 
@Adám right, as I was writing that message I knew that there were 3 things I wanted to ask..
 
I'm proposing (for Dyalog) that keys ⎕NS values does that (for namespaces).
 
I wanted to say keys ⎕map values too, but currently ⎕map is niladic :|
 
@dzaima Oh no. Niladic things are usually bad. What does it do?
 
6:07 PM
@Adám return an empty map
 
@dzaima Nah, much better to work like ⎕NS so ⎕NS'' or ''⎕NS'' makes a new empty one, and non-empty arguments populate it.
 
yeah, I guess I have no other choice as creating maps has to be related to ⎕map as in the future I might make another map type which allows arbitrary keys instead of string-only
@Adám and yeah, niladic things do feel bad, but by some reason converting them to (generator ⍬) makes them feel not so strange ⍨
 
@dzaima You can always add more interesting arguments later, but once you go niladic, you can't change anything, and using the function (e.g. with ) becomes awkward. An example of such a misstep was making ⎕OFF niladic. Later it was realised that one may need to specify error code, and so ⎕OFF had to be special-cased.
 
ngn
7:12 PM
@dzaima you might want a monadic version too: ⎕map keyValuePairs :)
 
@ngn oh yep yep yep it was that obvious and i didnt think of it
oh well obviously pairs, since the opposite is ⎕map/ and shouldn't really be useful ever hopefully
 
ngn
@dzaima well... however you define it
@dzaima I adopted this from kona: .((`a;1);(`b;2);(`c;3)) is equivalent to `a`b`c!1 2 3
 
7:42 PM
@Adám my proposition would be 'Length'⊃Thingy, though that involves quotes, which may not be desired, as the name should usually be constant
 
@dzaima Don't you want 'Length'⊃Thingy to be equivalent to Thingy.Length?
 
@Adám oh right, having that be regular dot would make more sense..
(and I'm already using it for regular dot so I don't know what I was thinking)
 
@dzaima I still thing you need a more general approach to access properties (not members) of things.
 
@Adám yeah, of course
 
8:27 PM
once youve created a .net object
how do you call functions on it?
a←⎕NEW String(⊂'hello')
a.ToUpper()

SYNTAX ERROR
 
@nathanrogers I'd assume a.ToUpper⍬? I know nothing about Dyalogs .net though
 
ah
well then
 
@nathanrogers For a function call that doesn't take any arguments, use any empty array, e.g. , so yes, a.ToUpper⍬ works, as dzaima correctly guessed.
 
are most applications built with .net?
what limitations are there in the relationship between apl and .net
 
@nathanrogers I don't think so. But most Windows applications use WinForms (by way of ⎕WC, though one may use ⎕NEW as well).
@nathanrogers Not many. Dyalog APL was on Microsoft's official list of .NET languages. (It wasn't removed; Microsoft just doesn't maintain the list anymore.)
 
8:42 PM
where can I read about ⎕WC
 
@nathanrogers Try typing ⎕WC and pressing F1.
 

« first day (624 days earlier)      last day (2037 days later) »