« first day (750 days earlier)      last day (1025 days later) » 
00:00 - 20:0020:00 - 00:00

00:14
so I have an urge to create a language but also not the motivation to fully carry through an entire new programming language
so instead I will try to start contributing to vyxal :P
add the ideas to version 3 planning :p
Also, #474
my ideas are just a mix of python and JS (but like, actually not cursed, but more so mixing the parts I like about both of them) so
probably nothing I can add to vyxal ideas :P
anyway lemme see if I can recall how to use the dictionary
I think I have it written out in my vyxapedia tutorial
oh I do. I'm unironically going to use a tutorial that I myself wrote to learn something ¯\_(ツ)_/¯
if i ever make a praclang it'll probably be something functional and homoiconic with python interoperability
00:23
i just did compression with a trivial DP right? IIRC
Sounds about right
or whatever i started designing to do advent of code in
think so yeah
i think i was gonna make a trie and then realized I was thinking about it the wrong way lol
also what is the short dictionary even
00:24
When you have an Unicode char without a second one
i think jelly also has a short versus long dictionary thing going on so it might be the same as there
@UnrelatedString jelly's compression thing is completely different lol
oh yeah that
00:25
it can also be implemented with DP tho lol, which is how I did it for the compendium's compressor
2
A: Tips for Golfing in Vyxal

lyxalUtilise the Short Dictionary Note: This is a 2.6.x+ feature only Newer versions of Vyxal have a neat little feature where 1 character SCCs are indexed into a special "short" dictionary of overlyspecialised "words". Here's a list of all the current entries: \d+ λ -?\d+ ƛ \d+\.\d+ ¬ -?\d+(\.\d*)? ∧...

ah
yeah this should be fairly easy
well, if I remembered how to do it :P
what version should I be running vyxal on
python 3.9+ iirc
> Requires: Python >=3.9, <3.11
from the PYPI page
00:40
okay thanks
uh, no utility for the small dictionary? like there's dictionary.word_index which automatically formats it as the encoded pair of chars
is small dict just a list lol
yes
it's just a list
hmm
okay time to do some scuffed stuff then ¯\_(ツ)_/¯
oh wait vyxal.encoding.compression means I don't have to generate the set of non-ascii codepage chars myself
poggers
Steffan153 opened PR #8 (Vyxal/Jyxal) (Vyxal:factorial → Vyxal:master): Add factorial/sentence case element
00:56
@lyxal does dictionary.max_word_len account for the short dictionary
no
for index, word in enumerate(contents):
    lookup[word] = index
    max_word_len = max(max_word_len, len(word))
ah
okay thanks
that doesn't enumerate over the short
it only goes over the long
00:58
alright cool. i will use a separate method for scanning the small dict cuz the inefficiency from just using the trivial approach is probably significant enough that I should actually optimize
since the max len is 18 but the short dict goes up to 113
gotta love that website regex
((www\.|(http|https|ftp|news|file)+\:\/\/)[_.a-z0-9-]+\.[a-z0-9\/_:@=.+?,##%&~-]*[^.|\'|\# |!|\(|?|,| |>|<|;|\)])
lol
big fat regex
though i dont see it being used in vyxal
there was this site with like 6 or so "important regexes you should know"
and it was one of them
but who needs to check that when code golfing
honestly it could probably be removed
01:01
max_word_len is gonna go way up
Honestly
Stuff in the short dictionary should be usable as part of something else
For example, the deadfish stuff and the website regex should probably be constants
But [a-z] can be used as part of something else
also like ₁ƛ₍₃₅kF½*∑∴,. that code doesn't even work right in the latest v of vyxal
why in the world is isdo in there. what's isdo
deadfish
what are the html tags for
in case you want to want to render HTML
01:09
i can't imagine needing <kbd> and </kbd> tho
oh this is more annoying than I imagined
because of how compression works short and long things can't be put back-to-back
also @lyxal how does it work if i have an ascii char between two non-ascii chars
is that two short forms or does it get merged to a long form like old vyxal does
two short forms
poggers
okay, this is still easy by just using two DP arrays
!!/issue summate does not work on negative numbers it just returns its input bug difficulty: easy
Vyxal-Bot opened issue #927 in Vyxal/Vyxal: summate does not work on negative numbers
01:19
what is it meant to do
digit sum but negative?
i suppose just ignore the minus
idk, maybe it should negate the result
i wouldn't expect it to return the input tho
it's "returing" the input because the - at the start makes it use string concatenation
it's effectively the same as summing a string
!!/run 23113N ƒ+
@lyxal -23113
def vy_sum(lhs, ctx=None):
    """Element ∑
    (any) -> reduce a by addition
    """
    return foldl(add, iterable(lhs, ctx=ctx), ctx=ctx)
so you'd have to change how addition works with strings and numbers
...or just take absolute value.
!!/run 12.56 ∑
01:22
@Steffan 3.56
that's also a bug ig
not really
it depends on what you'd expect
it does 1 + 2 + .56
01:23
that's how foldl works
i'd say potentially surprising behavior but given the implementation, expected and valid
a bit weird and potentially not useful though
but the question is, does 3 + 5 +6 make more sense
imo it does
but idk
flags?
@lyxal just realised in pasting this here, I'd accidentally ctrl-x instead of just ctrl-c
02:02
lol
02:14
night yall
02:31
Seggan approved on PR #8 (Vyxal/Jyxal): "Yeah... sorry, but you could do a lot better"
Seggan requested changes on PR #8 (Vyxal/Jyxal): "Woops hit wrong button"
Lists dont work at all in jyxal lol
Unexpected error while computing stack sizes:
Class = [jyxal/Main]
Method = [listInit$0()Ljava/lang/Object;]
Exception = [java.lang.IllegalArgumentException] (Stack size becomes negative after instruction [0] invokestatic #27 = Methodref(io/github/seggan/jyxal/runtime/list/JyxalList.create(Ljava/util/Collection;)Lio/github/seggan/jyxal/runtime/list/JyxalList;) in [jyxal/Main.listInit$0()Ljava/lang/Object;])
Unexpected error while editing code:
Class = [jyxal/Main]
Method = [listInit$0()Ljava/lang/Object;]
02:59
alright so my compressor passed 100,000 random tests for correctness (i believe it should be optimal but i can't test that easily) so I'll PR it now
hyper-neutrino opened PR #928 (Vyxal/Vyxal) (Vyxal:hyper/compressor-short-dictionary → Vyxal:main): Add short dictionary into optimal compression
uh, is this the right branch to PR into
okay I will take that as a yes
i failed a test? wack
how did it fail the black test; I literally have black format on save
Format to line length 80?
Waiit...
Oh
Oh I see
also damn we're approaching 1000 items
While we're at it, does this escape backslashes and backticks in the result?
03:05
doubt
@hyper-neutrino in what?
You're not using the latest version of black are you.
uhh
hm
@emanresuA github "things"
like the latest PR is #928
They made a change that removes spaces between ** and other things
And that version is what the ci uses
oh... that explains why my editor changed those back
03:06
You need to pip upgrade black
install --upgrade?
That one
hm, i did that but atom doesn't autoformat to the new version
Lyxal merged PR #928 (Vyxal/Vyxal) (Vyxal:hyper/compressor-short-dictionary → Vyxal:main): Add short dictionary into optimal compression
Lyxal deleted branch Vyxal/hyper/compressor-short-dictionary
oh I was going to fix the format issue first but aight
03:09
CI fixed it
So even if you submit something not nice it does formatting for you
Pxeger set that up for us
oh that's really nice
It also regenerates all the documentation from yaml if you change the yaml
Including test cases
i need to figure out how to update atom tho so i don't keep breaking formatting and then having ci auto-fix it
There'd be a setting somewhere to change the version it uses right?
i'd assume so??
03:14
Steffan153 closed issue #474 in Vyxal/Vyxal: Add the short dictionary to the compression algorithm
Anyhow, just in case 474 didn't kill your urge for language design, I've another thing that I'd like help with
oh i'm stupid
i ran pip install in WSL
but of course the atom python-black config points to an executable that is within windows so i need to run it in command prompt as well :P
👏
@VyxalBot wait, shouldn't there be a way to auto-close when merging or smth
or does that require extra setup we don't have
There is
Closing keywords
Github manages it for you
03:15
ah
where can I read a tutorial on how to use all these fancy things I don't know how to do :P
If you include something like closes #474 or fixes #474 it'll link it for you
oh poggers
oh thanks
145
Q: Closing multiple issues in Github with a commit message

RayneI know you can close issues by putting closes #1 or fixes #1 in the commit message. What is the best way to close multiple issues in the same commit message? Also, it appears that using fixes rather than closes doesn't create a link from the commit message to the issue, but it does close the iss...

03:17
@lyxal anyway, sure
As well
@hyper-neutrino version 3 element planning
oh v3?? huh
I'm having difficulties choosing an appropriate element set
ah
do you have a list drafted of stuff you're considering that you need narrowed down
What I have so far is in the version 3 branch
Anyhow, since you have much experience with competitive programming and languages like jelly, I think you're the perfect vyxaler for the job
03:19
oh we're pruning flags?
Some of them, yes
also is v3 still python or are we moving languages
Scala migration is a real thing
user has already made headway in regards to the foundations
oh, okay. but python will still be the language for the primary version?
or are we doing that for v3
python v2
Scala v3
03:21
hmm
anyway i don't know shit about scala but that doesn't matter for now i'll just take a look at the element list
I don't know much about scala either lol
But it should be easy to use
something I could do is just look through all existing elements and rate them all (in terms of usefulness, versatility, etc)
That'd be great
or should I look through the list on the v3 branch?
Existing would be better
03:23
alright 👍
Combined with the corpus that should give an indication of what to keep and what to drop
what's the best file to look through
elements.yaml
It gives description + an idea of what it does with raw data
are .txt and .md fine as well or do they have the possibility to be out of date
or is that the thing you said the auto-regeneration covers
Those are autogenerated
The yaml is the only thing manually changed
Everything else is automagic
03:25
ah, okay, thanks. the md is easier to read for me so i'll look at that
Sure
I’m kinda sad the md is no longer a huge table :(
Guess it’s better this way tho
It's easier this way lol
Yeah
03:29
Less thinking for me about how to markdown table
Because I do not markdown table very well
Getting the escaping to work properly was hell
I think the table was my first contribution to vyxal, sad to see it go :(
Hey so @user are there testing work flows for scala like there are python?
Ye
Check out the vyxals repo
It’s already there (hopefully not failing lol)
I see them
Very excellent
Oh there’s a pr by steffan, didn’t see it
03:45
u didnt? lol
i've been working on jyxal now too
also there's two PRs (by lyxal) waiting in the main repo
Ah I’ll review a couple tomorrow
Just took an ap today so i can coast until the end of the school year
nice
@lyxal are you just considering freeing up single-byters or do you also want to prune some digraphs
copilot does not understand java...
it does a terrible job
@hyper-neutrino Digraph pruning would be good
03:49
okay
there's plenty of space with digraphs tho
we should also look at the um, what's the name
corpus
we should look at the corpus
@Steffan But some could become a single byte
yes
mainly look at the lexer one
several common ones
29 mins ago, by lyxal
Combined with the corpus that should give an indication of what to keep and what to drop
didn't see that sorry
i didnt' look through the whole chat history
03:53
No worries
!!/'night
@Steffan o/
o/
 
2 hours later…
05:32
can't say I thoroughly read through all of the digraphs cuz there are just way too many of them for me to stay focused enough to give a good evaluation anyway
a lot of them seem like they are probably not used particularly often but also i'm not sure if you pruned them we could necessarily make better use of the space
05:46
@hyper-neutrino i think i agree with pretty much all of that
I’d like to keep ranges and triplicate around
Some of the digraphs aren’t that useful but hey, they’re digraphs so whatever
Why does E also evaluate as Python?
I thought the cross evaluated as Python and E was supposed to eval as Vyxal
chunkybanana opened issue #929 in Vyxal/Vyxal: `ẇ` is still cursed
chunkybanana opened issue #930 in Vyxal/Vyxal: `øD` doesn't escape backticks / backslashes
@lyxal My custon corpus should be good
@hyper-neutrino I think × should stay - it's often useful to have a 1-byte non-space string in general. Whether it should be changed to something else, I don't know, but it's been used 22 times which is way above average
can probably stay, and and have useful string overlaods
ǒ's a weird one that can probably go
Base compressed strings are useful for certain purposes
Ranges and triplicates are necessary
(it's always fun doing :D when I need to quadruplicate lol)
max/min by tail should've died a long time ago
They're literally only useful with Ċ, and we can add digraphs for those purposes.
Space (58) is definitely necessary, newline (9) is nice to have. Register is very useful (34 / 50), global array is quite useful (11/3/25).
We can leave digraph pruning for another time
Honestly, I've suggested a bunch of digraphs that are very niche and quite unlikely to be used in golfing (graph theory for example)
They do have uses in golfing though
06:35
as long as we're not short on digraph slots we can honestly let some pretty absurd ones stick around
keeping pointless one-byters is bad though
@hyper-neutrino apart from the asterisk literal (well, non-whitespace non-empty literal) and the is even, I think that's fair enough
!!/run 0 2 τ
[@hyper-neutrino: 61067844]
STDERR:
Traceback (most recent call last):
  File "/home/Vyxal/mysite/vyxal/main.py", line 164, in execute_vyxal
    exec(code, locals() | globals())
  File "<string>", line 5, in <module>
  File "/home/Vyxal/mysite/vyxal/elements.py", line 4281, in to_base
    maximal_exponent = int(log_mold_multi(lhs, len(rhs), ctx))
  File "/home/Vyxal/mysite/vyxal/elements.py", line 2386, in log_mold_multi
    return {
  File "/home/Vyxal/mysite/vyxal/elements.py", line 2387, in <lambda>
@emanresuA they were originally intended to be used with zipmaps when zip maps were a custom data type
06:44
... ಠ_ಠ When was this
Way back
Early days and months
The 0.x releases
@VyxalBot @lyxal can I just edit the make-to-base-work-with-negative-numbers branch to patch this, since your branch also doesn't work with base -1 which can be handled with a special-case
Sure
So long as it all works out merge conflict wise I'm good with that
@hyper-neutrino can't believe adnan wrote non-functional code
06:47
Lol
wait why is τ running line 2387
isn't that
oh wait no to_base called it
weird
That's a comment though
tf?
should τ on 0 return [] or [0]
and what is intended behavior for base=0, and should n=0 base=0 be a special case
Iirc 05ab1e just returns the input
Which is what vyxal should do
ah so 0 τ is a no-op?
and yeah should base conversion of n=0 be [] or [0] and what about n=base=0, would that follow whatever you think makes sense for n=0, or just return the 0 since base=0
07:00
I would say [0] and base=0 always return 0
wait when you say base=0 always returns 0 you mean regardless of n right?
oh also since the rhs can be a non-number
i assume for n=0 it should just return [base[0]]?
and what about base=[]
07:31
@hyper-neutrino for edge cases I say return 0
Regardless of the case
Either that or error
hmm, okay
07:49
Consistency of unexpected or non-practical edge cases is a good idea
Just like how there's consistency among github webhooks :p
Anyhow, as I know you're going to sleep soon, @hyper-neutrino I sure hope your urge to esolang design sticks around for a while... I'll take all the help I can get :p
And @emanresuA and @Steffan I greatly appreciate your feedback and commentary too!
 
4 hours later…
11:49
man looking at other repositories deving on main / committing straight to main looks so weird
12:10
!!/issue Sandbox Does bot allow labels properly? I noticed a tiny discrepancy between github docs and the bot code. So this is a test test beans ostrich
huh
interesting
@emanresuA wait, why is space necessary?
@hyper-neutrino for the github stuff, are you using octokit or something else?
nvm I figured it out
gonna make some juicy changes
12:48
@Steffan what was your input code and debug.log? it shouldnt spit such errors out anymore
13:02
there's a ever so slight chance i messed something up there
Over here, peek() will return null if you call it immediately without pushing anything first. Is it expected that the Dequeue will be empty when you instantiate CallStack?
yes
If so, you probably don't want to take it as a parameter, but if not, you should probably check if it's null or not
Yeah I think you should just instantiate it inside the body of the class itself then
im only taking the delegated stack as a param?
Having it be a constructor parameter implies that you should be allowed to pass in whatever you want
13:07
im confused
Like, if I do CallStack(myDequeueContainingStuffAlready) and then call peek on that immediately, top'll be null and there'll be an AssertionException or something
ah
ye ig ure right
Hmm, you won't be able to use delegation if you don't make it a constructor parameter
You could make the primary constructor private instead and have a secondary no-arg constructor
im just collapsing it into an anonymous object
Good idea
For methods like fun isDouble(): Boolean = value.contains('.'), do you want to instead make them vals with custom getters?
So you can do num.isDouble without parens
13:13
thatd be fine
pog
im still in love with kotlins property syntax ever since i wrote
private val mv: MyxalMethod
        get() = callStack.peek()
It's definitely one of my favorite things about it, especially since you can delegate properties and have extension properties
Is it no longer possible to have all the builtins return Anys? Kinda sad to see the explicit stack.pushes
its only for the ones that do stack manipulation
since it was kinda hard with the new abstract compiler to make exceptions for em
Ah ok
 
2 hours later…
15:03
@lyxal no, i barely know what that is either :P
just using raw requests kek
 
3 hours later…
17:39
19 messages moved to ­Trash
18:05
Vyxal's approaching 100 stars! (94 currently)
18:49
6 messages moved to ­Trash
19:39
there surprisingly few elements i can implement in myxal itself
as an stdlib
`,¢…
[1|0]¢ḃ
λ;ṡ¢s
`Z¢z
``¢D
0i¢h
`L1-i¢t
2*¢d
1+¢›
the ¢ is the alias separator, the right side is the alias name, left is the implementation
accurate enough?
note that the backtick is duplicate in myxal
@Seggan Is : used for something else?
@Seggan Also, this is really cool
yep, pair
Ah
" is string
19:50
I'd like to have used , for pair but that's used for print :|
nah i like the BF reminiscent ,
Do we really want Vyxal to be reminiscent of BF tho? :P
something familiar :p
also i just realized that in all this time i still havent implemented swap
00:00 - 20:0020:00 - 00:00

« first day (750 days earlier)      last day (1025 days later) »