« first day (431 days earlier)      last day (1344 days later) » 

01:12
@hyper-neutrino @AaronMiller @UnrelatedString @Underslash @Razetime @Wasif @Ausername @user @AviFS @pxeger @math ^ (sorry for the mass ping, this is one of the few times I'll be doing such a ping for a while)
This might not be the right place to ask this but I noticed Vyxal has a really nice online interpreter running on pythonanywhere.com. I recently made my own language with the interpreter also written in python and I'm trying to figure out how to make a similar online interpreter. The only problem is that I don't know what I'm doing when it comes to getting a website working - did you guys follow any tutorials to get that working and, if so, is there any chance you could point me to them?
I’m on mobile, but it looks pretty good to me
@DanielH. one moment, I just gotta find the tutorial I followed
this is good
(the tutorial)
feel free to use my css/html/javascript templates
and take what you want from my own flask application
@lyxal thank you so much! I'm usually better at google-fu but couldn't find anything relevant earlier lol
@DanielH. also, check out hyper's yuno and branch
I took some code from those two repos for my own server
and then also look at AaronMiller's grok interpreter
and then you might also be interested in this tutorial on setting up automatic updating of your server's code each time you commit
@DanielH. just keep in mind that sometimes even I don't know what I'm doing with pythonanywhere/my site, so I may not know what to do in some cases
also, make sure to check the list of libraries pythonanywhere has by default, so you know what you need to pip install
and then on top of that, before accessing site files within pythonanywhere (e.g. using open(file, mode)), insert the following:
THIS_FOLDER = os.path.dirname(os.path.abspath(__file__))
file = os.path.join(THIS_FOLDER, fileName)
obviously you only need THIS_FOLDER to be assigned once, but you would need to create a new file name for each file you want to open using os.path.join
But that's all once you've gotten the site working lol
@DanielH. ^
01:30
Thank you! That's all incredibly helpful
no worries ;)
02:01
my current implementation of yuno is in JS so the entire thing runs client-side, so it's not too helpful - unless you're willing to use JS instead of Python
my online interpreter server (branch, flurry, etc) has some stuff that might help but do be warned that it's not actually secure AFAIK
02:49
Mmm time to start trying to implement Transformers
what are transformers
Postfix operators
Quicks
Adverbs
That kinda thing
ye
poggers
02:59
I'm also refactoring the parser too
Because currently it isn't very well suited to transformers
No major changes are needed though
Because everything is already placed into a list of tokens
ah
yeah managing a stack of functions and then just having transformers pop works quite well from my experience
that's the plan at least lol
03:46
:)
Excellent
i take it implementing transformers is going well?
Haven't started lol
04:00
Starting off simple with the basic stuff
map is the one i always start off with lol
it's also not too hard to see how to implement it for variadic links, and it works well with infinite sequences
04:17
@lyxal Nice
WOW
so many commands
@hyper-neutrino Good job
but where did the two byte diagraphs go?
They'll come.
as opposed to the three byte digraphs
04:19
Three byte digraphs could actually exist...
no.....
Three byte diagraphs no....
twos are enough
Like, the spec allows for them.
oh really?
how does that work lol
group them first
øøm or kk5.
04:21
wouldn't those be trigraphs
then execute as single command\
y'all do realize what the "di" in digraph means right
@hyper-neutrino TTrue
@hyper-neutrino Maybe not.
oh sorry
Also, we only actually need one closing character instead of four, and two digraph characters instead of five.
04:22
digraph just = 2-byte command :p
or like any group of two characters
if it's 3 it's a trigraph
vyxal has a corpus issue right
@hyper-neutrino yuno is ready?
yes it does
Yeah but it's useless
@lyxal corpus has dead links in it
90% of the more common ones are stuff I use only for ascii art
04:23
possibly due to 2x-1 changing usernames
90% of my Vyxal answers are ascii-art
@Wasif its structure is set up so i'm just going through the tedious process of implementing a shit ton of built-ins lol
I'm starting to run outt - page 19/23.
I should be sleeping right now, but... infinigraphs when?
I'm glad we have a new ASCII art enjoyer
04:23
@AaronMiller :thonk:
what is 2x-1's current username?
wait so how does it work
when you see a digraph starter
you just read again and if you see another digraph start, you read again, etc indefinitely?
Also, I just realised English is tacit.
04:24
show your work
how English is tacit
@Ausername who??
2x-1 = ghostt
RIP
@hyper-neutrino 69 ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨,
04:26
That should be rickroll builtin.
lol
but that dosen't look like builtin
holy heck that's a lot of messages
excellent
@Wasif It's a new constant: kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk69
Can we add kṙ to vyxal as the full text of rickroll?
@Ausername yes
04:28
Time to go back in time ~3 hours and go to sleep at a healthy time. o/
it should be built into interpreter
It's funny how TNB is dead and here is thriving.
@Wasif I'm yet to decide on those because I moved some of their functions into the overloads
Good idea
Mmm my computer is almost dead so I won't be able to work on the new parser for a while
Because python is very hard to write on mobile
04:30
your parser is already very good
@lyxal not so hard, I have written thousands of python code on mobile
@Wasif yes, but it isn't very well suited to having postfix operators
I'm also doing some code clean-up too
Its been a while I have cloned Vyxal last
need to clone again
I'll be putting the new parser on the experimental branch when it's ready
893 commits
excellent
04:33
I honestly have no idea how I made Jyxal's parser half the size of Vyxal's.
VyParse looks like the parser of a standard language
Anaconda parser is even half size of Jyxal
That's cause Anaconda is simple.
I mean, compare Vyxal to Jyxal.
does anaconda even exist
not so much
I am in a huge fix
what to make it
why is your lexer half golfed ಠ_ಠ
04:36
thats how I write code
Snake is like that too
It's probably because it offloads a substantial amount of work to the compiler.
I am thinking should I make it into python or JS
doing it in Js would improve my skills
and online interpreter will be better and faster
@hyper-neutrino probably because mine does more sanity checks
i should have probably specified
Like I make sure that strings are grouped before the actual parsing starts
04:38
i was looking at wasif's anaconda lexer.py
I don't do that
@lyxal wdym strings are grouped
I just keep track of if it's in a string, number, compressed integer, etc.
Grouping n-graphs are more necessary
like you divide ab`hello`cd into [a, b, `hello`, c, d] and then parse the tokens?
04:40
@hyper-neutrino correct
Not doing so caused too many problems
i don't think that's sanity checks i think that's just standard tokenizing/lexing before parsing :p
not lexing before parsing is painful
It works for me...
I really need to learn how standard languages are made....
granted having your tokens set so you can build a parse tree is mostly relevant for normal languages and you can get away with it if the extent of your parsing is like transformers
But then again it leaves dealing with stuff like vß⁽ßßvka to the compiler as a single token.
I'm starting to regret allowing that.
04:43
I think charcoal is not transpiled isn't it
It's python.
I have no idea
I know its python
but it looks like it uses AST and other things that standard languages use
Transpiling is generally faster than interpreting, I think.
yeah maybe
but interpreting gives you more flexibility
in The Nineteenth Byte, 2 days ago, by A username
I'll leave it a bit longer just in case. Time to go Vyxaling!
 
2 hours later…
06:28
@Ausername which of your answers has a double map lambda?
some of my answers might have nested lambda maps
but not adjacent ones
Someone's used a double map lambda though
I think SE search don't work with unicode?
06:40
No it does, but when I specified my userid it didn't.
very sus
06:59
CMQ: how could I rework the online interpreter to be able to accept multiline strings?
@lyxal when you encounter string delimiter set a string flag, and capture everything in between including newlines and when faced another delimiter close the flag and keep evaluating tokens
But looks like this will not go with your group string strategy
@Wasif No because parsing input = completely unrelated to parsing code.
@Wasif AUsername is right. I'm talking about the input box on the website
oh sorry
I thought vyxal cannot parse multiline strings in code
No
because it currently splits on newlines
oh
\n in the input works
Looks like you're going to need to tokenise the input...
no
it works
that's how you input newlines
lol
nice
but \t and other things don't seem to work
@Wasif ?
make sure you wrap it in "
07:09
I am probably the dumbest person around
no
I wrapped in it ``
heh, that's natural
Can we fix this
It's extremely counterintuitive.
I'm so used to ` as string delimiters that it feels odd using " sometimes
@Ausername sure
I'll make it so that vyxal literals can be evaluated too
07:10
well ` is slightly better looking than "
plus it's unique
unique as in most golfing languages use "
yes
Js uses `
> most golfing languages
even python once had ` as a string delimiter
@lyxal True
@lyxal Wait what
Why was ittt removed then?
07:12
@Ausername idk
removed in v3
@lyxal when
it was repr
yeah
repr
not string delim
ah
07:15
uh
lol
XD
got'em

It's things like these that make me love the Vyxal community even more :)

4 mins ago, 3 minutes total – 6 messages, 3 users, 0 stars

Bookmarked just now by lyxal

nice
08:17
Heh, I forgot how cursed the parser actually is
And I'm remembering why I generally try not to touch it at all
08:35
it can't be more cursed than jelly's
# Am I really that lazy? Yes.
@UnrelatedString i can attest to this
so yeah i can't really tell what's going on because there's a lot of sparsely commented code but it's definitely way less cursed than jelly
08:56
CMC: Write a Vyxal parser in Vyxal. And no E.
09:19
@Ausername this is no CMC
M = massive
this is a full on project
10:22
@Ausername your challenge made me realise that my current set operations (eg ) are redundant, as they are already implemented by things like F
So that's a free operation then...
Time to make them multiset lol
Seriously
Yep
Just use dingledoopers sum trick
10:23
In both v2 and experimental
Also is there an ascii-only way to remove the first item of a list or string?
Beat jelly by 1 byte
(Old challenges are a pain)
@Ausername \ +1u"i
Oh but for a list, replace + with J
Ok thanks
10:27
It works by adding an extra item to the string/list and then taking item[1:-1]
Because i given a list of numbers acts as a slice
Oh true
Is the answer posted?
Not yet
10:34
Because I'd like to upvote pls
Is there a way to reverse a list? (It's possible without, just painful)
(again ascii-only)
Does the list contain sublists?
No, just strings
wrap then vectorise Reverse
10:47
Wow
You poor thing
I don't envy you
Congratulations on winning though lol
Winning?
Absolutely not.
Check the leaderboard snippet
Mine says #1
Oh well I don't really care
I just wanted to see if it was possible
10:50
Heh
@Ausername big brain me adding accidentally useful ascii features
Btw how is vectorising i meant to work?
11:03
@Ausername a[I] for a in b
That is, index each item in the first item popped with b
And of course it doesn't do it at all
sigh
Except it does with swapped arguments
Hmm
Does that mean vectorisation is just generally broken?
Yes it does
Excellent \s
At least it should be easy to fix
Hopefully
The best comment
11:14
@Ausername that's a pretty big assumption ngl
dear past me: what the hell did you do to vectorisation?!?
(dear future me: what did you do to vectorisation?)
oh wait... I forgot I made _safe_apply take arguments in reverse
very cool past-lyxal
doge job
11:17
oh frick how the frick is triadic vectorisation supposed to have it's arguments?
like I know that it's supposed to do f(item, b, c) for item in a
but I mean in regards to _safe_apply
2 mins ago, by lyxal
like I know that it's supposed to do f(item, b, c) for item in a
except for the fact that i didnt implement it as so
The way I'm planning to implement vectorisation is just to do a map, but with the stack it takes input from as the current value, plus the rest of the main stack. Then figure out how many items it popped and put that back on the stack.
I mean, it's kinda too late for you now
I just don't want to have to keep track of the arity of everything.
What are the major differences between the experimental branch and master?
@Ausername heck, it was the laziest way for me to do vectorisiation properly
@pxeger transformers, changed codepage (order and new chars), more array stuff and more useful overloads
nice
@lyxal Sure...
11:25
@Ausername emphasis on properly
originally i just turned v<whatever> into ƛ<that same thing>;
That's what I thought I was meant to do for Jyxal
nope
doesn't handle dyads and triads properly
It's much more useful this way anyway
Btw are you ever going to fix element counting in minilambdas?
in e branch, yes
for v2, maybe
 
2 hours later…
13:15
:0
I'm so proud of my little parser
being able to do transformers like a big boy
:)
Also, it's smaller now
less lines
hmm
he breaks on structures though
excellent
13:38
Lyxal: "little parser"
Also Lyxal: "a big boy"
Also Also Lyxal: "it's smaller now"
Hey, give the parser a break, he's just a kid
 
6 hours later…
19:46
Idea: A (repeat operation until there's one element left on the stack) commands?
Eg. +. would keep popping and adding the first two elements, until you were left with the sum of the stack
You have Π & which are like special cases
important to note that this is not the same as wrap + reduce in case said operation takes pops more than 2
or pushes more than 1
or pushes 0 or >=2 elements
I'm considering, for my stack-based lang, replacing most array-based commands with a "execute this code in a new stack frame with this array as its initial stack". A bit like eval, I suppose. (and having the array commands operate on the stack itself)
interesting
 
3 hours later…
22:52
@AviFS yes
 
1 hour later…
23:55
What does yes mean?
@lyxal ^
It means "yes, that's a good idea"
And that "yes, I'll get around to implementing that"
Idea: Second register?
Or multiple registers, where a number literal tells you which-th register to choose
@AviFS it'll be equivalent to {!1≠|

« first day (431 days earlier)      last day (1344 days later) »