« first day (1806 days earlier)      last day (864 days later) » 

12:01 AM
@FawnLocke Aha, thanks for telling me!
 
12:18 AM
I kinda wish you could store a TryAPL.org session, not sure how viable that'd be
I suppose it isn't meant for that either
Yeah, that definitely wouldn't be easy or economic. I suppose I could make some changes to Ride and run it on a server whilst targeting the browser
 
you could probably make a userscript of some sort that would store the session locally
 
That's a good idea
Thanks
 
12:48 AM
@FawnLocke What exactly do you mean by that?
 
Like, have the option to store your history for future use/reference.
 
Ah, your log, not your assigned valued.
 
Yeah
 
Because you don't know you can opt in to storing your values in localStorage, right? You can also download/upload them.
 
I didn't know that
 
12:51 AM
Go to the FILE tab.
If you want, you can log an issue asking for persistent log too.
@FawnLocke Could you elaborate on what makes TryAPL superior to RIDE? Maybe we can improve RIDE.
 
I don't think it's superior, it just has my preferred environment out of the box. Nice interface, up arrow gets the last executed command, runs in my browser (bonus for me). RIDE just feels "claustrophobic"
 
Ah you want that REPL single-line input box?
 
Yes
 
You can have RIDE be a browser tab too, btw.
 
I'm aware, I should make that my default, actually.
 
12:55 AM
@FawnLocke Please log an issue to that effect.
 
Will do! That would be a nice option :)
 
While I don't think setting <BK> to UpArrow will work, you can make it Shift+Up or Alt+Up etc.
 
Btw, is it possible to have a second pane open in RIDE? For sending output there (instead of having one window for input & ouput). It'd possibly be nice to have an arbitrary amount of panes open on different threads too.
 
I can confirm that <BK>=Up doesn't work
 
@FawnLocke I think github.com/abrudz/out works with RIDE.
 
12:59 AM
I'll try it out later, thanks
 
Doesn't do per-thread, though. (Do you really wrote multi-threaded APL?)
 
Actually yes, but that's not why I want it. It'd be nice to have an arbitrary amount of (possibly) related problems in view at once - at least for me. I usually define functions in projects that don't rely on but extend from the ideas of others
Just a thought
 
@FawnLocke Heh, it decided to restart itself while I was looking at it.
 
At least I got a stack indicating where things went sour.
 
1:09 AM
Hello, I'm probably missing something very obvious, but is there no way to clear RIDE history without deleting a history file?
 
@MaciejGoszczycki The feature is missing. Please log an issue asking for this.
You're not alone in wanting this. Though I'm curious why people want to get rid of the log. I never do.
You can disable the log file, which means you get a clean log every time you start. For that, set LOG_FILE_INUSE=0
 
I don't mind it too much, but for example today I messed up an outer product and got loads of output in the log. It's not exactly unusable but I can feel my CPU struggling a bit a more every time I hit return on a new expression.
 
Ah, that's an issue.
 
I guess that would go in dyalog.dcfg?
 
Either there, or (assuming you're not using RIDE 4.3 on macOS) in the environment variable area of the start screen, or as an normal system environment variable.
 
1:16 AM
haha, I do happen to be using RIDE 4.3 on macOS, so dcfg is it. Thanks
 
1:34 AM
Is there a simple way to convert `0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0` into `1 1 1 1 2 2 3 3 3 3 3 3 3 3 4 4 5 6 7 7 7 7 8 9 9 9 9 9` I can't figure it out.

Looked up "partition mask" and "partition" in the aplcart
 
So increment on every change?
 
Yeah
 
+\1,2≠/v
 
Ah, that makes sense...
Thanks!
 
1:53 AM
@Adám i have a question
 
@Fmbalbuena Why don't you just ask it?
 
@Fmbalbuena Next time, just ask me. I'll respond when I can.
 
@Adám help
 
Do you want help with anything in particular, or just in general?
 
a command for me?
 
1:56 AM
Was that your question?
Anyway, I'm having a hard time remembering what you've learned. Did you learn ? (question mark)?
 
2:12 AM
@FawnLocke I should go to bed. Now you made me implement a native solution for this under Windows:
∇OutPane
 :If 0=⎕NC'⎕SE.outPane.t'
     :With '⎕SE.outPane'⎕WC'Form' 'Output'('Dockable' 'Always')
         Dockable←'Always'
         :With 't'⎕WC'Edit' ''('Style' 'Multi')('Coord' 'Prop')('Size' 100 100)('VScroll' ¯1)('HScroll' ¯1)('Border' 0)
             P←{Text,←{0=⎕NC'⎕SE.Dyalog.Out.Filter':↓⎕FMT ⍵ ⋄ ⍵ ⎕SE.Dyalog.Out.Filter ⍬ 1}⍺ ⋄ SelText←2⍴⊂1,⍨≢Text}
         :EndWith
     :EndWith
 :EndIf
 ⎕SE.onSessionPrint←'⎕SE.outPane.t.P'
∇
 
Heh, I can't say I'm sorry, that's awesome!
 
 
Woohoo!
 
The Output pane can be docked anywhere, or undocked. I can put it on a different screen, etc.
Can also change colours independently of the input session.
 
Awesome, I'll try and get this working on wine.
 
2:20 AM
I doubt the interpreter will run under Wine.
 
I've got it working before
Didn't try the IDE
 
Oops. Tiny bug in my code.
∇OutPane
 :If 0=⎕NC'⎕SE.outPane.t'
     :With '⎕SE.outPane'⎕WC'Form' 'Output'('Dockable' 'Always')
         Dockable←'Always'
         :With 't'⎕WC'Edit' ''('Style' 'Multi')('Coord' 'Prop')('Size' 100 100)('VScroll' ¯1)('HScroll' ¯1)('Border' 0)
             P←{SelText⊢←2⍴⊂1,⍨≢Text⊣Text,←{0=⎕NC'⎕SE.Dyalog.Out.Filter':↓⎕FMT ⍵ ⋄ ⍵ ⎕SE.Dyalog.Out.Filter ⍬ 1}⍺}
         :EndWith
     :EndWith
 :EndIf
 ⎕SE.onSessionPrint←'⎕SE.outPane.t.P'
∇
 
@Adám random. i guess
 
Setting custom Output pane colours ^.
 
@Adám is that "?"?
 
2:26 AM
now i shall stack alternating dark theme and light theme muhahahahaha
 
Noooo!
 
It'd be trivial to make it change colour randomly every time you print something…
 
oh dear
 
@Razetime Ctrl+C Ctrl+V Enter and now everything changed to normal.
 
@Adám Dyalog APL but it's a 2000s internet website
 
2:28 AM
@Fmbalbuena No no, no connection. ? does indeed generate random numbers. ?n generates numbers from ⍳n like dice.
?0 generates a random non-integer between 0 and 1.
And of course, it works on arrays. So to roll 3 dice: ⋄ ?6 6 6
 
@Adám 6 5 2
 
@Fmbalbuena Want a task?
 
⋄+⌿?6 6 6 6 6
 
@Fmbalbuena 19
 
@Adám yes
 
2:31 AM
Well, you almost solved it already: Write a function that takes a number, rolls that many 6-sided dice, and returns their sum.
 
⋄{+⌿?⍵⍴6}10
 
@Fmbalbuena 38
 
@Adám done
 
Very nice.
 
another?
 
2:33 AM
OK, so ?10 10 10 gives you three random numbers from 1–10, but they might be the same: ⋄ ?10 10 10
 
@Adám 5 6 6
 
why?
 
See? We got two 6s.
 
and how to fix?
 
Because each element of the argument to ? is a separate die.
 
2:34 AM
random seed?
 
Sometimes it will happen, sometimes not.
 
⋄?10 10 10
 
@Fmbalbuena 6 8 8
 
⋄?10 10 10 ⍝
 
@Fmbalbuena 10 3 9
 
2:35 AM
⋄?10 10 10
 
@Fmbalbuena 1 2 1
 
hmmm i don't understand.
 
If you want to select a subset of the indices, you use dyadic ? with the count of numbers you want as left argument: ⋄ 3?10
 
@Adám 3 8 2
 
@Fmbalbuena The numbers are random, and not connected in any way.
 
2:37 AM
then
 
(I could keep editing my message; we'll never get any duplicates.)
 
⋄f←?⍨6
⎕←f 7
 
@Fmbalbuena
┌───────────┬─┐
│2 4 6 5 1 3│7│
└───────────┴─┘
 
Hmmmm
 
What's the problem?
 
2:39 AM
i want ?⍨6 become {⍵?6}
 
Oh, you're using the wrong operator.
f←?∘6 is what you want.
 
hmmm
@Adám is swap, but why ?
 
binds an argument to a function.
So ?∘6 is like {⍵?6}
 
@Adám what does this mean?
 
And 2∘? is like {2?⍵}
 
2:42 AM
why ?⍨6 won't work?
 
It does work, but it does something else. It is the same as 6?6
 
oh, I mean ⍨?6?
 
That doesn't make sense.
is an operator. It needs an operand on its left.
 
⋄8⍨?6
 
@Fmbalbuena 8
 
2:44 AM
This is similar to {8}?6
 
@Adám ERROR
 
No, that's not an error.
 
⋄{8}
 
@Fmbalbuena (1 trailing line)
{8}

␄
 
?6 generates a random number. Then {8} takes that random number and ignores it, instead returning 8.
 
2:48 AM
@Adám CMC: visualize 4d array but
 
but…?
 
1 3
3 3

2 3
3 3

3 3
3 3

4 3
3 3
gives
1 3  2 3
3 3  3 3

3 3  4 3
3 3  3 3
 
Oh, you want the 4D array to be shown as a 2D array of 2D arrays?
 
yes
for making game.
 
⋄ my4Darray←2 2 2 2⍴⍳16 ⋄ ⊂⍤2⊢my4Darray
 
2:51 AM
@Adám
┌─────┬─────┐
│1 2  │5 6  │
│3 4  │7 8  │
├─────┼─────┤
│ 9 10│13 14│
│11 12│15 16│
└─────┴─────┘
 
No
don't use
┌─────┬─────┐
│1 2  │5 6  │
│3 4  │7 8  │
├─────┼─────┤
│ 9 10│13 14│
│11 12│15 16│
└─────┴─────┘
use
1 2  5 6
3 4  7 8

9 10  13 14
11 12  15 16
 
Oh, I see.
⋄ my4Darray←2 2 2 2⍴⍳16 ⋄ ⍕⍤1⊂⍤2⊢my4Darray
 
@Adám
 1 2  5 6
 3 4  7 8

  9 10  13 14
 11 12  15 16
 
Like this?
 
⋄ my4Darray←2 3 2 3⍴⍳16 ⋄ ⍕⍤1⊂⍤2⊢my4Darray
 
2:54 AM
@Fmbalbuena
 1 2 3   7  8  9  13 14 15
 4 5 6  10 11 12  16  1  2

 3 4 5   9 10 11  15 16 1
 6 7 8  12 13 14   2  3 4
 
seems to work fine
and
⋄ my4Darray←2 3 2 3⍴'ab' 'cd' ⋄ ⍕⍤1⊂⍤2⊢my4Darray
 
@Fmbalbuena
  ab  cd  ab    ab  cd  ab    ab  cd  ab
  cd  ab  cd    cd  ab  cd    cd  ab  cd

  ab  cd  ab    ab  cd  ab    ab  cd  ab
  cd  ab  cd    cd  ab  cd    cd  ab  cd
 
ok, i like
useful
now, bye
 
3:45 AM
@Adám does TryAPL support graphical output?
 
why?
 
Because we haven't gotten around to implementing it yet. It is planned, however.
 
Who made TryAPL?
 
Look at the bottom of the HELP tab.
 
3:47 AM
Adám since you're here, is there a nice function that turns '**' '****' '***' into 2 (2 2) (2 1) fine if not, I'll just use cmat
 
I don't get the transformation.
Why are you copying that in here?
 
Well, please don't clutter this room. Use the sandbox room for that.
 
I'm attempting to partition n amount of asterisks into as many pairs of * as will fit. (For parsing * from markdown)
 
Hmmm
 
3:50 AM
@FawnLocke Ah, but shouldn't the first element be (,2) then?
 
Yes
 
Is there a way of displaying large numbers (as in, over 10 digits) without scientific notation in the REPL?
 
@Adám lang bar?
 
(running it locally)
 
@AndréLeria Set ⎕PP to as many significant digits as you want.
 
3:51 AM
Yes, you can increase ⎕FR & ⎕PP to increase precision and floating point type.
 
(Other way around, sorry)
 
@Fmbalbuena What?
 
APL bar
 
What about it?
 
Is there a problem?
 
@Adám no, only i need
 
@FawnLocke {2 1/⍨⌊2(÷⍨,|)≢⍵}¨
@Fmbalbuena What do you need?
 
APL bar
 
wdym?
 
3:54 AM
@Adám APL keyboard
 
Much appreciated
 
@Fmbalbuena Try to state what you need using a full sentence.
 
@Adám ⋄{⍵⌿ ⍵/ ⍵ ⍵⍴ ⍳ ⍵*2}3 seems interesting to me, Can you explain?
 
@Fmbalbuena
1 1 1 2 2 2 3 3 3
1 1 1 2 2 2 3 3 3
1 1 1 2 2 2 3 3 3
4 4 4 5 5 5 6 6 6
4 4 4 5 5 5 6 6 6
4 4 4 5 5 5 6 6 6
7 7 7 8 8 8 9 9 9
7 7 7 8 8 8 9 9 9
7 7 7 8 8 8 9 9 9
 
@Adám I need APL bar, I need to type glyphs.
 
3:56 AM
@FawnLocke Shorter, less efficient: (≢¨⊢⊂⍨1 0⍴⍨≢)¨
@Fmbalbuena OK, and the language bar you linked to doesn't work for you?
 
@Adám This works, But I need link to APL bar.
 
But you already have the link!
 
@Adám Can you explain {⍵⌿ ⍵/ ⍵ ⍵⍴ ⍳ ⍵*2}?
 
I can try.
⍵ ⍵⍴ ⍳ ⍵*2 you should already understand. Correct?
 
@Adám ⍵ ⍵⍴ ⍳ ⍵*2 where is 3 gives 3 3⍴9
 
4:00 AM
@FawnLocke Even shorter: (≢¨≠\⍤=⍨⊂⊢)¨
@Fmbalbuena Yes, very good.
And do you remember /?
 
@Fmbalbuena Hold on, you're missing a . That was a typo, right?
 
Mmm I feel like these should've been more obvious to me, maybe I'm tired. Thanks for your time regardless
 
^ Move to trash for some reason
1 2 3
4 5 6
7 8 9
@Adám "/"?
 
We used it to "filter" things: ⋄ 1 0 1 1 0/'hello'
 
4:04 AM
@Adám hll
 
ok
hmm
⍵⌿⍵?
 
But actually, the numbers on the left are repetition counts: ⋄ 1 1 2 1/'helo'
 
@Adám hello
 
i know
 
And a single element distributes: ⋄ 3/'abc'
 
4:05 AM
@Adám aaabbbccc
 
So 3/⍵ ⍵⍴ ⍳ ⍵*2 is that same 3 3⍴⍳9 but every column is triplicated.
 
ok, not now.
 
Is ⎕IO ← 0 a default of sorts? I realize it's convenient for using ⊃ for conditional lookups, but should I expect it everywhere, or only when noted?
 
No, quite the opposite. ⎕IO←1 is the default.
 
Ok, good to know
 
4:12 AM
However, many prefer ⎕IO←0 and most use it at times (it is especially useful when dealing with number bases). If you don't know exactly what code will call what, it is wisest to localise ⎕IO (to whichever value) unless you're sure your code doesn't need it.
 
It does make me more comfortable. As someone who's done some Lua, I can understand 1-indexing as "ok" instead of "blasphemy"
 
What makes you more comfortable, 0 or 1?
 
Whatever the language is designed around
 
Heh...
 
I'd say it handles both equally well. Both settings have upsides and downsides.
 
4:15 AM
I mean, humans tend to read stuff by index 1, so it's like a breath of fresh air sometimes. Saying "the zeroeth element" of something feels weird
And as I said, the time I toyed around with Lua taught me to adapt
 
Yes, and the last element has its index match the length.
 
(I did trip around indexing in that language in the beginning, however)
 
However, in some situations, the best setting really depends on what exactly you're doing.
 
I see
 
E.g. if you want to take up until and including the first occurrence of some element then ⎕IO←1 is best: ⋄ 'abracadabra'{(⍺⍳⍵)↑⍺}'c'
 
4:18 AM
@Adám abrac
 
Hmmmmmmmmmmm I didn't realize this kinda behaviour could change
 
But if you want to trim then ⎕IO←0 is best: ⋄ ⎕IO←0 ⋄ 'abracadabra'{(⍺⍳⍵)↓⍺}'c'
 
@Adám cadabra
 
Ok, then I do need to pay more attention than I initially thought
 
Anything that takes or returns indices is affected,
but anything that deals in offsets or lengths isn't.
If you use one index to do some other indexing, your code is likely ⎕IO-agnostic. This applies e.g. to the DNA/RNA translation code we had earlier.
 
4:22 AM
I thought everything would be offset, so the results would never differ
 
But if you combine offsetting/lengths with indices, then ⎕IO matters.
 
Guess I just hadn't seen such case
 
There's {∇⎕ML ⎕IO⊢←⎕IO-⍨?4 2}&⍬ if you ever wanna write ⎕ML & ⎕IO independent code
 
Haha.
 
4:23 AM
Throw in ⎕WX and ⎕DIV too.
And why not ⎕CT/⎕DCT while you're at it.
 
Oh dear
 
@FawnLocke Still haven't reached the trains chapter of the APL books, sorry
But I can kinda realize it's a joke
 
This isn't related to trains. On that note though, I'm really loving writing tacitly!
Maybe abusing it...
            ┌──────────┴───────────┐
            @                      ⍨
     ┌──────┴──────┐             ┌─┘
     ¨           ┌─┴──┐          ∘
   ┌─┘           ∘    ⍤      ┌───┴────┐
┌──┼──────┐     ┌┴┐ ┌─┴──┐   ⍨   ┌────┴─────┐
bi ∘  ┌───┼───┐ 2 | @    ¨ ┌─┘ ┌─┴─┐        ∘
  ┌┴┐ 2 ┌─┼─┐ ≢    ┌┴┐ ┌─┘ ⊆   \ ┌─┼───┐   ┌┴┐
  ⍨ ⌊   ⍨ , |      ⍤ ⊢ ∘     ┌─┘ 1 , ┌─┼─┐ * ⍷
┌─┘   ┌─┘         ┌┴┐ ┌┴┐    +       2 / ⊢
/     ÷           ⍳ / * ∊            ┌─┘
                  ┌─┘                ≠
 
h o l y
 
These trains might be a tad too long
 
4:26 AM
@FawnLocke That's the flying spaghetti monster, right?
 
Yes, my favorite pokemon
 
Kinda looks like a Cthulu implementation
 
@FawnLocke Well,, if you build them up piece by piece using names, only that the result is like that, then it is fine.
 
Yeah.
I have been working on this one-liner that handles markdown italics/bolding for a few hours now
emboldening? Words are tough
 
Handles? What does it do? Render to HTML?
 
4:29 AM
Yeah
 
I suppose it is for your enjoyment? There's already a MarkAPL library.
 
Yes, rewriting my static site generator without using markdown-it
 
Isn't it easiest with regex?
⋄ MD←'\b__(.+?)__\b' '\b_(.+?)_\b'⎕R'<b>\1</b>' '<i>\1</i>'⍣2
⋄ MD 'this _is_ __bold__ and ___both___ and _this __overlaps___'
 
@Adám this <i>is</i> <b>bold</b> and <b><i>both</i></b> and <i>this <b>overlaps</b></i>
 
Probably, my APL skills are weak though, more non-trivial projects the better
 
4:37 AM
⋄ MD←'(`+)(.+?)\1' '<code>.+?</code>' '\b__(.+?)__\b' '\b_(.+?)_\b'⎕R'<code>\2</code>' '&' '<b>\1</b>' '<i>\1</i>'⍣2
⋄ MD 'this _is_ __bold__ and ___both___ and _this __overlaps___ but `this _is_ code`'
 
@Adám this <i>is</i> <b>bold</b> and <b><i>both</i></b> and <i>this <b>overlaps</b></i> but <code>this _is_ code</code>
 
Etc. for each syntax.
 
5:05 AM
Wish we had hooks in a glyph
 
Uh, we do:
Well, or "hook" — the dyadic hook. For the monadic hook, you need with
 
I should've been more specific
Didn't know beside was a dyadic hook, I normally think of the monadic form of hooks so that's probably why
 
You've not heard the latest Array Cast‽
Well, I propose f⍛g be backhook even when monadic.
 
I rarely listen to podcasts, I've only listened to 1 episode, sadly
 
I rather like that you have to write monadic hooks as f∘g⍨
I prefer that the duplication of the argument is explicit.
 
5:10 AM
That's an interesting way to look at it. I tend to avoid over-hookifying things because it gets ugly quickly
 
@FawnLocke Thank you so much for your report about TryAPL being slow. I managed to narrow it down to a bug in a member of dfns.dws and I've now added code to TryAPL so it patches that.
 
Yay!
 
Did you by any chance experiment with Under?
 
I've been using Under, yes
 
And you hit cases where trying to display your definition just hung, right?
 
5:19 AM
Yes, I have
 
Try again now.
 
Hmm, intended?

            U ← {⍺←{⍵ ⋄ ⍺⍺} ⋄ ⍵⍵⍣¯1⊢(⍵⍵ ⍺)⍺⍺(⍵⍵ ⍵)}
      U
SYNTAX ERROR
      U
             ∧
 
Yes.
 
Nice, may I ask what the issue was?
 
(Other than the being in the wrong position, but that's a separate issue.)
 
5:23 AM
Gotcha :)
 
The code was trying to identify the naming of a dfn, so it looked for ←{ but caught the inner ⍺←{. I amended it to look no further than after the first {
 
Ah, I see.
 
Fun thing that since I can't change the dfns.dws that's included in the off-the-shelf docker container, I instead "hot-patch" the code by getting the code representation, running a regex replace on that, and re-fixing it.
 
Heh, that's cool
 
 
3 hours later…
8:38 AM
@FawnLocke that's a nice tree you got there :)
 
8:49 AM
@FawnLocke And I've fixed the worst offenders.
 
 
2 hours later…
11:20 AM
the problem is not so much in 0-based systems (which computer scientists like) or 1-based systems (which mathematicians like). The real problem is with ⎕IO setting a mode. Your code behaves differently depending on the mode your system is in at the time, unless you reset the mode just before running your code. This aspect of APL is thus not purely functional, because there are contexts and side effects.
I suppose that at this point ⎕IO is legacy and we have to live with it.
 
@AlexB Absolutely. In hindsight, everyone agrees that a single suboptimal index origin would have been much better than giving the choice.
 
@Adám ah OK, so apparently this issue has been debated at length in the APL community. Being new, I am still trying to figure things out.
 
12:07 PM
@AlexB are mathematicians really that much into 1-indexing
 
I think it depends on their domain, but mathematically inclined languages tend to use 1, e.g. Fortran, MatLab, Mathmematica, Julia. Wikipedia says:
> In recent years this trait has also been observed among many pure mathematicians, where many constructions are defined to be numbered from 0.
which sounds like it is a recent development, possibly influenced by computing.
 
12:46 PM
I suspect that zero-origin became more common when languages that implemented array indexing as exactly equivalent to pointer math came into wider use. When I first got involved in programming, C was not yet the "hot" language, and 1-origin was essentially assumed. I was exposed to APL before I was exposed to C, and ⎕IO was a novelty, one which I thought was interesting, but wasn't sure I saw the use for. I generally (and still do) code with ⎕IO being assumed as 1.
 
1:20 PM
@KamilaSzewczyk I don't know (because I am an engineer, not a mathematician) but that is my perception. Search for the word "zero" on this page: en.wikipedia.org/wiki/Natural_number
Algol and Pascal also have 1-based arrays, though some Pascal dialects make that configurable. See also: en.wikipedia.org/wiki/…
According to that Wikipedia page, Edsger Dijkstra is responsible for pushing languages to be zero-based.
https://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD831.html
 
While I'm nobody, I'm not convinced by Dijkstra on that.
 
@Adám Awesome, works great!
 
@Adám I agree that Dijkstra's argument is not compelling. By my personal experience, C had a big influence on the zero-based approach. C was meant as a very efficient high-level (by the 70's standards) system programming language. Computers had to be very efficient in using memory, so arrays were just pointers and the PDP architecture had offsets and increments built into the hardware.
 
@FawnLocke Actually, I enlisted @Leo to fix all of them :-)
 
So the natural choice was to start from zero, so the initial element of an array would be at the same address as the array base address.
 
1:34 PM
Heh
I agree with Alex. I don't think there are any strong arguments one way or another, nowadays it's just convenient to implement IO←0. ⎕DIV is much worse imo despite being less "harmful"
 
@Adám how will the logo be selected? Are votes being solicited?
 
@AlexB I'm going to set up a website where people can rank them, and then we'll find a few finalists using Ranked Choice Voting. If there's a clear non-apple winner, we'll use that. If there's a clear apple-based winner, we'll use that until we get sued by Apple, bask in the publicity, then fall back to the next winning non-apple logo. Depending on outcome, we may need a second round to decide on variants of the winner.
 
@FawnLocke actually, I wasn't advocating one way or another for APL. It seems that ⎕IO←1 is more idiomatic, from what I understand.
 
I wouldn't even claim that. Very relevant reading.
 
Yeah, I simply meant I agree with why ⎕IO←0 is the defacto and stuck on my own opinion :)
 
1:42 PM
For a lot of everyday practical problems, ⎕IO←1 is clearly superior, but for many things, especially those that involve (implicit) modulus arithmetic, ⎕IO←0 is a must.
 
@Adám my 2 cents on "apple" in the logo: I doubt that Apple Corp can do anything about this because APL's usage of the apple in the logo is probably very old. If anything, I don't know if this is good for APL, because people will associate the language with a company and/or get confused.
 
E.g. it is convenient to get prefixes as (⍳≢a)↑¨⊂a using ⎕IO←1
 
Yeah, I prefer ⎕IO←1
 
@AlexB I tried finding the earliest reference to an APL-apple pun and it is unclear what came first, APL puns or Apple's logo.
 
I could definitely see Apple taking action
 
1:44 PM
Yeah, Apple is definitely in the programming language business, so…
 
@Adám a trademark has to be in continuous use.
It may be more prudent to use a logo without an apple in it. It may also be better long-term for APL.
 
Apple has been using an apple motif since 1976.
Yeah, while widespread, the apple pun isn't even very good. APL isn't pronounced like that, and it has no connection to any characteristic of APL.
 
Trains output is broken on TryAPL again, btw
Only for certain trains though.... hmm
Oh, it's only when a train has an array tine?
 
Example?
 
((Tag⍨/¨)@⍸⍤Ca⊢(2,⍥⊂/⊢)).s
⊣ ∊ ⊣ ⊣@ }∘= ⍸⍤ ~∘ +\ -⌿ {} ∘.= ⊢ ⌷⍤ ¯1 99 ⊢ ,∘ {} , /> ,⍨ ¯1 ∘↓ ⍨ <{}> ∊ ⊣ ⊣@ }∘= ⍸⍤ ~∘ +\ -⌿ {} ∘.= ⊢ ⌷⍤ ¯1 99 ⊢ ⍨ ⊢ ⍥⊂ ⍨ / ¨ @⍸ ⍤ *∘∊ ¨ ⊢ 2 ,⍥⊂ / ⊢ . <h2> *** About me * help <h2/>
 
1:53 PM
What is Tag and Ca and s?
 
I ← ⌷⍤¯1 99
U ← {⍺←{⍵ ⋄ ⍺⍺} ⋄ ⍵⍵⍣¯1⊢(⍵⍵ ⍺)⍺⍺(⍵⍵ ⍵)}
Title ← ('h',⍕∘≢)U⊃@(<\≠)' '∘(≤\⍤≠⊆⊢)
Inset ← ∊⊣⊣@('}'∘=)⍸⍤(~∘(+\-⌿)'{}'∘.=⊢)I⊢
Tag ← (⊣Inset(,∘('{}','/>',⍨¯1∘↓)⍨'<{}>'Inset⍨⊢))⍥⊂
Ca ← '*'∘∊¨
Accidentally included the . before the s and that was the output, not sure if it's expected behaviour
 
I'll try it.
@FawnLocke But what was s?
 
1 second
 
((Tag⍨/¨)@⍸⍤Ca⊢(2,⍥⊂/⊢)) displays just "fine" (it is a giant monster) for me.
 
 P_Asterisk ← ⍸⍤(2|⍸@⊢∨~)⍤Ca I⊢)⍤((+\1,2≠/⊢)⍤Ca ⊆⊢
s ← P_Asterisk ⊃Tag⍨/ Title '## ***About me*** *help*'
Oops P_Asterisk ← (⍸⍤(2|⍸@⊢∨~)⍤Ca I⊢)⍤((+\1,2≠/⊢)⍤Ca ⊆⊢) You probably caught that already
 
2:03 PM
Nice @Adám!
Should also something mentioned about identation (using tabs or spaces) and the position of { and } on seperate lines or not. And the use of whitelines? Or is it a custom around APL programmers to leave it to the programmer?
 
@FawnLocke OK, I can repro it now with a much smaller input: +.'a' 'de' 'g' '' — I'm not very concerned though, as that is an invalid construct.
 
Yeah, I was curious why that didn't error
 
I'm actually surprised it doesn't. I was very certain it would.
Who would have thunk: ⋄ +.'a'/'b'
 
@Adám b
 
Indeed
 

« first day (1806 days earlier)      last day (864 days later) »