« first day (1041 days earlier)      last day (734 days later) » 

04:00
@user HEY BINGUS! YOU FORGOR 💀
That's the best yell I could come up with :p
If you want, you can summarise what it was you wanted to do and I'll see if I can do it later
04:50
@lyxal Thanks, working on it rn
@lyxal I'm trying to think about what I want to do :P
Once I can put it into words, I'll tell you, yeah
:+4:
The colour is yellow btw
Yellow?
4 mins ago, by lyxal
:+4:
Do we need to make Context an abstract class and have separate subclasses for toplevel contexts with their own variables (like functions and the top context) and for child contexts (like if statements, while loops, etc.)?
@lyxal The color of the +4 emoji is yellow?
@user no you bingus, I played a draw 4
04:58
If we do that, for map and filter lambdas with multiple branches, we could make a map-lambda-specific context that's a parent to all the contexts created for the branches. All the variables created in the branches would then be put into that shared parent context
@lyxal Oh
I drew a 4
@user what's wrong with passing context between function calls
@user I said the colour is yellow. This isn't yellow
Because then the contexts get nested
So when we implement a debugger, the context for the third branch will be inside the context generated for the second branch, which will be inside the context generated for the first branch
Which might be a good thing depending on how we want things to work
Or a bad thing
@lyxal Your card was yellow. This is a wildcard 4
@user What if execute function but use the context provided function?
That way, it doesn't return a new context
idk, it's been a while since I played Uno because my cards got stolen when coming to the US 🩻
Alternatively, add a use this context parameter to execute
05:01
@lyxal Yeah I've been thinking about that
But to create the context, you need to do all that input-unpacking stuff first
@user my card was the wildcard. Everything after that has to be yellow
@user so then if a context is provided, modify the variables attribute of that
@user The funny thing is, whoever stole it (probably airport workers, because the whole deck was there while packing) left behind the little cardboard box the deck came in, the instructions, and the 2 blank cards provided with the deck
@lyxal That works
@user wait unironically you lost them?
Should I try implementing that?
@user sure
05:03
@lyxal I didn't lose them, they were stolen
@user but unironically it really happened?
I lose a lot of things, but there's no way I lost only the usable cards
@lyxal Yes lol
I thought it was one of those jokes where we pretend we did something when we didn't lol
Ah
Sounds like you need to play Schroedinger's uno then
Ginger made it so that you can play uno over SE chat
05:05
I invented Schroedinger's Uno
I sold the cat to Schroedinger, along with some torture instruments and a Geiger counter
Not that one, the one where you see your cards in an image only you can see because cookies
Ooh, that sounds cool
It actually is
We played it in the sandbox chatroom a while ago
It was buggy
It worked until Radvylf committed identity theft
It also got rate limited really badly
That's a game in action btw
05:10
How do I join?
What's ctxArgs btw? Is it just like inputs but overrideable?
@user you don't
That was a game in action
:(
Bot hasn't been around for a while
Ah I misread That's as There's
@user let me check the source code to see where I used it real quick
05:13
@lyxal That's what quantum bomb detection'll get ya
@lyxal Only one place
case AST.ContextIndex(index) =>
        val args = ctx.ctxArgs.getOrElse(Seq.empty).reverse
        if index == -1 then ctx.push(VList.from(args.reverse))
        else if args.length < index then ctx.push(ctx.settings.defaultValue)
        else ctx.push(args(index))
In Interpreter.scala
In execute, line 167, to be more precise
Trying to remember why I used that instead of inputs
Oh yeah right because inputs is an object
I needed a list
Actually I think wait passing in a context doesn't really solve the problem since each function has different inputs and should probably be in a separate context, we can just do what we were doing and pass in the mut.Map for the variables instead
@user Oh oh also also because yes it is overwriteable
It's so that generator structures can append the terms they generate to that seq
I think we could just add a method to Inputs to get the original inputs as a list
Permission to do ^?
No it needs to be appendable
05:19
Aww
Because the generator structure would otherwise not know about all the previous terms generated
@lyxal Do they have to store the terms they generate in the context? Can they store it somewhere else and pass that on?
@user well where else can it be stored between lazy evaluation calls?
It's so you can do something like relation `3` `2` add end to get the 3rd and 4th last generated terms
(0 indexed)
Maybe it should be 1 indexed
@lyxal They can just be passed to the function, right?
Wait lemme look at how it's implemented before saying more
The generator method in Interpreter seems to have a previous parameter for that
def generator(
      relation: VFun,
      ctxVarPrimary: VAny,
      ctxVarSecondary: VAny,
      arity: Int,
      previous: Seq[VAny] = Seq.empty
  )(using ctx: Context): LazyList[VAny] =
It does have it, but also note that what's passed to inputs isn't the same as what's passed to args
05:25
Right, overrideCtxArgs
I don't know why I didn't pass it to args though
Oh actually I do
Because most of the time, you want inputs to be the args for the context
But with generators, you want every term generated to be args
Inputs only takes the last (arity of generator) items that have been generated
Why not let inputs be List(previous)?
That is, there would only be one input, all the generated items wrapped in a list
1 min ago, by lyxal
Inputs only takes the last (arity of generator) items that have been generated
That's how Husk does it
Husk isn't stack based
And then there's explicit arity too
05:30
Argh
05:48
@lyxal Would it be acceptable to use the secondary context variable instead of a special ctxArgs variable for the list of items that have been generated?
We have a Context class and two context variables already, it'd be a bit confusing if we had another variable called ctxArgs. And even if we named it something else, it's a lot of variables to juggle (we even have a register, although that's global)
The secondary context variable is already used to store all the inputs, storing all the previous terms instead would be in that spirit
06:36
@user it's kind of a third context variable instead
@user I want it so that you can write relation n m add from <whatever> end and get a fibonacci sequence
I want it so that you can always easily access the last 2 terms
@user that behaviour should be changed then
The tertiary context variable is golfier anyway
06:56
Alright, approving
Forgor
What should the secondary context variable do in normal lambdas?
07:09
Also, ¤ is the tertiary context variable
It can either push all args in a context or the nth arg in a context
pushes the nth arg and ¤ pushes all
n ¤ is not the same as
(in these examples, n is some number token)
It binds number tokens that are next to it
But not when there's whitespace
Hmm, may be a bug? `ÞK` (Suffixes of a list) works well with strings too.
But `K` (prefixes) does'nt work with strings. Is there another operator for string prefixes, or may be check `K`
Cumulative sum on strings
¦
@lyxal Thanks!!
07:34
No problem :)
08:32
@lyxal I realised at 11:30 PM that I completely misunderstood what you meant :/
Mind if I open another PR? ^_^
First though, should the starting vector be retained in the output as well?
That doesn't seem very logical, but you could do stuff like 4ɾλǔ;İ (get all rotations of a list).
Moreover, duplicate and append is a byte longer than behead. :P
In both cases, this could be fixed with an additional line of code.
09:21
@mathcat 👍
@mathcat no, because there can be another function overload for including it
Is it worthy of an overload or would a digraph suffice?
Monograph
... what
Single character
A monograph is a single character, a digraph is two characters and a trigraph is three characters :p
09:39
well that makes sense
anyways
09:55
The expected output for the first test case here would be [1, 2] then?
Cuz 0 is the starting vector.
10:32
By doesn't include, it means the return list doesn't have it at the start
It can show up at the end or anywhere in the middle
10:47
I don't see why removing the if-statement wouldn't work, then.
Is f = lambda n: 1 if not n else 0 supposed to output [1, 0]?
Oh, it wouldn't work for f = lambda n: 0.
11:15
bot ded.
yes
11 hours ago, by lyxal
@Ginger where bepp bopp
11:39
dang
I've gotten way too used to element documentation being in the scala code :p
I'm adding Jelly-like convolve and thought just adding it with the decorator was enough
lmao
What's the difference between Jelly convolve and Matlab convolve?
no clue
I just know they do different things
different things with 1d arrays
Matlab convolve seems to be more advanced/general
Jelly's seems to be more primitive
but it's good to have for porting purposes :p
@mathcat your implementation works with 2d arrays. Jelly's is purely 1d
 output[i][j] = sympy.nsimplify(numpy.sum(rhs * lhs_cutout)) # matlab style
 result[i + j] = add(result[i + j], multiply(x, y, ctx=ctx), ctx=ctx) # jelly style
12:11
12:44
!!/bot where the hell are you
!!/don't make me throw potassium at you
!!/I swear I will dip you in battery acid if you don't appear soon
13:21
ffs
one second
I'm restarting it
I can and will put it in the acid lake
Well, here we are again.
It's always such a pleasure.
@VyxalBot you got lucky this time
you get to stay away from the tiny houses for now :p
and of course the bot says nothing, because it's not sentient
13:26
It's too busy riding down the acid tunnel of love :p
man that section was trippy to play at 10/11pm
at least there wasn't a bug which made the section go on for too long like there was with the music trio fight
@Ginger Can't you just make it sentient?
oh right, import soul :p
soul.create("vyxal-bot")
14:00
!!/status
@Ginger I am doing a date with someone I found on Tinder. Hopefully she likes beans and crappy code-golf in-jokes
cool
 
1 hour later…
15:07
!!/status boring
...
frick
Well, here we are again.
> [Room-106764] CRITICAL: An error occurred while recieving data!
...
that's new
15:18
nice.
*receiving
Bots making spelling errors?
!!/don’t make spelling errors or angry, amateurish grammarians will come for you
Sorry parz, I'm afraid I can't do that.
!!/Why is your profile picture eating a cookie?
Sorry parz, I'm afraid I can't do that.
.
!!/say something other than “sorry parz, i’m afraid i can’t do that.”
15:23
Sorry parz, I'm afraid I can't do that.
AUAUUDJJDIIIUAAAUISHSKANA
._.
15:57
@VyxalBot Find some tinder and burn the restaurant down
16:16
!!/status boring
Bot status: Online
Uptime: 1:08:34.991512
Running since: 2023-02-22T15:08:14.757299
Errors since startup: 0
good
!!/u good bro?
@mathcat I am doing unspeakable acts. I'm so sorry
!!/brew a coffee for me
16:24
Sorry mathcat, I'm afraid I can't do that.
ysthakur created branch flexible-status in Vyxal/VyxalBot2
ysthakur opened pull request #15 (Don't prefix statuses with "I am doing") in Vyxal/VyxalBot2
mathcat4 commented on #15 (Don't prefix statuses with "I am doing"): "Wouldn't the status start with a lowercase letter now?"
hyper-neutrino approved #15 (Don't prefix statuses with "I am doing"): "LGTM"
GingerIndustries merged pull request #15 (Don't prefix statuses with "I am doing") in Vyxal/VyxalBot2
GingerIndustries deleted branch flexible-status in Vyxal/VyxalBot2
!!/make me a coffee
@Ginger Here's your coffee: ☕
thamks
!!/status
@mathcat I am doing things like stealing things from Fort Knox. Or was it the Moon? No, definitely not the moon
16:53
ysthakur created branch i-am-not-doing in Vyxal/VyxalBot2
ysthakur opened pull request #16 (Don't use "I am doing" phrasing for some statuses) in Vyxal/VyxalBot2
ysthakur requested GingerIndustries's review on #16 (Don't use "I am doing" phrasing for some statuses)
GingerIndustries requested changes on #16 (Don't use "I am doing" phrasing for some statuses): ""I am poping""
> I am doing dQw4w9WgXcQ
!!/sus
@mathcat ඞඞඞඞඞඞඞඞ
me when sus
hm
sus
test sus test
@mathcat ඞඞඞඞඞඞඞඞ
17:06
ok, it does work
cool
17:28
Steffan153 approved #1643 (Add a convolve element that behaves like Jelly's)
mathcat4 approved #1643 (Add a convolve element that behaves like Jelly's): "looks good"
mathcat4 enqueued pull request #1643 (Add a convolve element that behaves like Jelly's) in Vyxal/Vyxal
mathcat4 merged pull request #1643 (Add a convolve element that behaves like Jelly's) in Vyxal/Vyxal
mathcat4 deleted branch fix-convolution-with-1d-lists in Vyxal/Vyxal
mathcat4 closed issue #1533 (Convolution builtin) in Vyxal/Vyxal
Lyxal deleted branch gh-readonly-queue/main/pr-1643-95f6fb9b4db67bed7552a6e05ba94ce96aaf2012 in Vyxal/Vyxal
Remind me again, why was the number of reviews required reduced to 1?
18:10
sus
hm
!!/sus
@Jacob ඞඞඞඞඞඞඞඞ
how can i get the first n items of a list
nvm found it
18:28
!!/permissions list 533049
@mathcat User Ginger is a member of groups discussion, member, admin.
huh
I think the bot's just ignoring you.
sus
welp now it's ignoring me too
no, there's only a 1 in 4 chance of it replying
did that intentionally
sus sus sus sus sus sus
@Jacob ඞ
18:30
if i say it four times in one message are the odds increased
sus sus sus sus sus sus sus sus
aw man
me when creeper
did u remove that thing where it can run vyxal code
18:30
sus
!!/help
I'm Vyxal Bot 2.0.0 made by Ginger and hyper-neutrino.
All of my commands start with !!/
If you want help for a specific command, do !!/help <command name>.
New to Vyxal? Try !!/info for more information.

Command list: amilyxal, blame, coffee, cookie, die, goodbye, groups, hello, help, hug, info, issue-open, maul, permissions, ping, prod, register, repo-list, run, status, sus
!!/amilyxal
@mathcat You are not lyxal.
you should make !!help with no argument be a synonym for !!info
!!/permissions list 554550
18:31
@Jacob User Jacob is a member of groups discussion, member.
!!/help run
@Jacob No help is available for that command.
!!/run kS
Sorry Jacob, I'm afraid I can't do that.
hm
18:32
Feature request: Lyxal should have a 10% chance of not being lyxal.
2
@Jacob It was nuked
ah
!!/sus is three bytes shorter anyway
Sorry Jacob, I'm afraid I can't do that.
!!/sus
@Jacob ඞඞඞඞඞඞඞඞඞ
 
1 hour later…
19:55
@mathcat that would mean just adding and random.random() >= 0.1 to this line. Should be quite simple to do...
yes, but I'm not sure lyxal would support this :d
!!/cookie
for fuf's sake
it crashed, AGAIN
HALP I WANT COOKIE
DA BOT NO WORK
!!/COOKIE
I TRY FOR THIRTI MINUTE BUT NO COOKI
 
2 hours later…
22:37
@mathcat it could be funny
!!/amilyxal
aaaa
@lyxal You're willing to have identity crises simply because it's funny?
Respect
@Seggan no
(I can function as the bot again if you'd like)
As long as y'all don't use !!/die again. Reanimating myself is always a pain
22:52
@user that's like 99% of what we do here anyway
Purely because things are funny
Precisely
@mathcat quieter times
Vyxal is no longer at its peak of activity
The 2 review requirement was good during that time where there wasn't as much cohesion in development as there is now
But now there's less contributions and also we've learnt how to effectively and efficiently collaborate
And because there's no longer all those people around to review
23:00
That too
2 reviews isn't practical anymore either
I'm hoping AI gets good enough that one day we can just get Copilot to sign off on stuff
And then one day Copilot could just write the whole thing based off of design documents made by humans
Believe it or not, I don't think I'd trust AI to review PRs
Hmm, I guess code is sort of a design document
But like a really low level "document"
@lyxal Well not now ofc
But in like 2 weeks or so?
Not even in the future
We'll probably reach the singularity by then
Maybe 3 weeks, tops
Gah, I wish I could search for smbc comics as easily as I can search for xkcds
There's a relevant one here
@lyxal Is this evil AI paranoia or something else?
23:03
Something else
What's the something else?
Distrust in human programmers to make good AI?
Context
PR reviews require more context than just "hey write this code base on these instructions"
It requires testing and making sure that what's written in the PR fits with the rest of the system
And what if I introduce a deliberate mistake and it passes it when a human would say "hang on, that's not the direction we're going in at all"
Also, different people will pick up on different things that I might want to consider
Well I'm assuming this super intelligent AI would take that into account, it wouldn't be a simple text-based model like Copilot or ChadGPT
Something closer to an AGI would be needed
For example, all the times you've suggested subtle scala changes that make things nicer for everyone
Those are actually pretty easily done. Scalafix can do those automatically for Scala 2 :P
23:07
"hey you used null don't do that I'm going to throw an error"
The bigger changes, are, as you've said, a big problem and very hard to detect, but I'm sure that very, very far into the future AI can tackle those
What good is scalafix against the things it won't fix
If humanity lives long enough
@lyxal I mean, it's not advanced enough to rewrite the code to not have nulls at all because it doesn't know what you want, but (with Scala 2) you can do stuff like write your own rule to turn if x then 1 else 0 into (x: VNum) and stuff like that
@user so you still have to specify to it what changes you want made
Any AGI will still need training on what changes it should look out for
Yes, the rule maker does
Humans also need extensive training first, so that's acceptable, I think
23:10
Because different projects have different rules. And those rules could change at any time, meaning that the AI has to spend time learning those new rules that might not even be 100% objective and purely taste driven
I'm not against AI for things I just think that PR reviewing isn't one of the fields it'd be practical for
I could be wrong, and something could be made
Not in the near future, no
But eventually, it should be able to do basically everything a human can
Eventually is a long way off so we programmers are probably safe
@user if anything, I'm probably one of the least paranoid about ai lol
@lyxal I do think an AI would be better able to get a sense of the code style than the average human. It'd be able to compare what's usually used in the industry to what the Vyxal codebase uses and judge our tastes based on that. We may even be able to prepare a document with general guidelines to help it along
@lyxal Very wise, Natural Stupidity wielding Artificial Intelligence is far more dangerous than Artificial Intelligence by itself :P
@user I don't know if this is as desirable as we think
Because if it can do everything a human can do, there's a chance it wouldn't want to be alive in the world we live in :p
It'd have to not know about how the world is basically on fire to even have a chance at being reliable :p
23:47
@lyxal well, it wouldn’t have emotions
If it did, it might also decide to eliminate humanity, and as long as it’s done in a way that doesn’t hurt anyone too much, i wouldn’t mind that

« first day (1041 days earlier)      last day (734 days later) »