last day (113 days later) » 

Welcome y'all
Not my golflang but redwolfs
 
Lyxal has removed Lyxal from the list of this room's owners.
 
Okay so there's a few things I want to discuss here
1. Why do you feel you need a take n but bad?
Challenges usually allow you to choose 0 or 1 indexing
So have 1 or the other
2. Halving on lists should reduce the number of elements, not add more
Like maybe remove first and last
Instead of double each element
3
+-*/ should probably do something useful with two non-number strings
And how does one convert a list to a number?
(pin that somebody ^)
@RedwolfPrograms
 
2:36 AM
@Lyxal That's not the final spec; I have and will be making changes to it
1. I think one indexing can be useful sometimes for some math stuff, but I guess I get your point. I will still keep the Range 1 to N for sure, and maybe the For But Bad (those were temporary names of course)
2. That makes sense, will do
3. I want certain operations to always cast to a certain type, like arithmetic, concatenation, and map/filter
 
@RedwolfPrograms you know you can edit gists right?
 
I'm starting on the final spec for the wiki, so I don't really see a point. At the moment the gist is mostly up to date.
Oh here's my repo for it, there's only one page in the wiki atm
5
It's all still sort of a mess, give me a few days and the docs and interpreter should be good
Working on the string compression right now
 
 
1 hour later…
3:49 AM
just a heads up about the code page, is just barely narrower than two properly monospaced characters, so code explanations could get reeeeeeeal ugly
 
@UnrelatedString That's what tabs are for, right?
Shouldn't be too annoying with an auto-generator
 
@UnrelatedString I can vouch for that: Keg has quite a few extra wide chars in its code page. Explanations got really unaligned and annoying
@RedwolfPrograms no, they screw up the spacing
 
Wait really?
How?
 
They make those tabs very marginally misaligned
 
I remember that one time I used Neim and that HURT
 
3:54 AM
@Lyxal I don't notice any misalignment
 
any character that isn't the normal monospace width in DVSM bust be purged
 
Oh wait, the editor handles them differently from the result :/
 
yeah it's a font thing
 
3:54 AM
Notice how there is a very slight misalignment with the pounds
You see this happen with charcoal
The comments in explanations get real messy
 
Who the heck makes tab characters not go to the proper alignments, kinda defeats the purpose of them :/
 
Which is why you'd want to have a more paragraph based explanation
@RedwolfPrograms those characters we're telling you not to use
They do it
 
Yeah but tabs should still be designed to line up regardless of what's before them, right?
That's the point of them. Even typewriters do that :/
 
wait isn't most of charcoal's codepage funky fullwidth
that does actually align with itself
 
Not if they have a longer width
 
3:57 AM
@RedwolfPrograms regardless you misalign what comes afterwards
 
@UnrelatedString I tried making an explanation once it was real messy
 
@RedwolfPrograms ^^^
 
I've already got a bunch of weird width characters, and I like them, so it seems easier to just keep them
 
it even messes up the column widths of your code page table lmao
would be cool if it monospaced though
good taste
 
4:18 AM
Okay, I can't decide if I should use the term function, operator, or command
On the one hand I use terms like arity and argument that would suggest they're functions, and the way they're treated is sort of like functions (but not in the functional programming sense)
On the other hand, calling them functions might make people think they have features like first class functions and optional arguments, which isn't possible
 
I don't think people would necessarily assume that
 
So you think it's fine to call them functions?
 
I'd definitely not go for operator unless they're infix
yeah
maybe I'm biased because mine are also called functions
 
Postfix is the correct term for when it's operator operand*, right?
 
yeah
you could also say suffix but postfix is better
main reason I'm saying functions is I'm ripping off APL terminology
despite not knowing APL
 
4:45 AM
so, this one's stack based as well?
 
No, not stack based
 
interesting
non-stack based postfix
I'll definitely be trying this
 
5:13 AM
@RedwolfPrograms atoms
call them atoms
atoms can have arity
and atoms can have arguments
@RedwolfPrograms
 
I like function more, atom would definitely work though
 
5:50 AM
room topic changed to Ash: Chat for the Ash golfing language by Redwolf Programs (no tags)
 
fl=2
Is that prime checking?
Because it's length(factors(input)) == 2
which checks to see if the list of factors is [1, input]
 
It'd be =lf2
 
so prefix?
 
Oh, I guess that's prefix not postfix
Honestly I'm not really sure which I prefer
 
Wait how does it know to group lf together
how does it know I don't want f2
 
5:55 AM
Oh, you'd have to put something after f as input, so =2lf would probably be better
 
Okay but how does it know it's not =2l then f.
 
Implicit input isn't really going to be easily possible with the system I'm using, which is unfortunate
Well it knows l is unary and 2 is nullary
 
Ah I see what you mean about implicit input being difficult
Because the parser would see = (arity 2) and say "I need two things". It'd collect the 2` and then collect the l and see that the l wasn't complete
but then what happens if I have =2l
without the f
 
My current design would use implicit input in that case
 
ġF1 10
prints 1\n2\n3...\n10
 
6:01 AM
Pretty much, except the ` 10` would be replaced with a constant of some sort
Looks like I didn't actually remember to add a constant for ten though so that might be a good thing to do
 
İ"Heck""e""*"
Censors the word heck, making it h*ck
 
I'm planning on having be able to end the string when it encounters something outside one of a few character classes, so you'd be able to golf that to İ“Heck“e“*
 
@RedwolfPrograms I literally just had that ready to send
i got ninja'd
@RedwolfPrograms Tastes like Jelly
Maybe you could have different arity patterns that expand in different ways
throw a bit of tacitness into the mix
 
I'm going to have four types of string literals: single character, single UTF-8 character, the one above, and typical half-compressed strings
 
@RedwolfPrograms 'e '∞ "Heck" "İĿ"?
 
6:12 AM
Pretty much, but using those ugly smart quote characters instead
 
stupid smart quotes
 
So for the tacitness, are you saying something like unary functions being treated the same way, but binary operators are infix instead?
o5+o4=o9 instead of =+o5o4o9
 
6:31 AM
No tacit isn't necessarily infix
 
Well I know it's a lot more complicated than that but I'm not just going to make it entirely tacit or it becomes Jelly with different builtins :p
 
Hang on I'm trynna remember what the chain rules of jelly are
 
they depend on arity
 
Do you have a plan for parsing yet
 
and basically the only thing that isn't left to right is if a monadic chain has a dyad then a monad or a dyadic chain has two dyads
aside from nilad dyad pairs obviously
 
6:33 AM
@Lyxal Mostly, yes
 
@RedwolfPrograms I felt that ping
 
 
4 hours later…
10:26 AM
@Lyxal Use 2 indexing so that you can have a built-in returning the second-to-last item of a list.
@Lyxal Polymorphism can be less useful than automatic type casting.
 
@2x-1 how so?
 
10:46 AM
I feel like autocasting might be best considered as a kind of polymorphism
where you more so want polymorphic behavior that's conceptually similar to casting than you want strict casting everywhere
like, look at how Jelly builtins that handle lists can't decide if they want to turn integers into singleton lists, ranges, or digit lists
it just works
 
 
12 hours later…
10:35 PM
Parsing string literals is not going to be fun. I'm going to change it so that they'll be parsed when necessary (i.e., when the function they're passed to is called) instead of during tokenization.
 
What?
Why?
 
Two reasons:
1. It's boring and I want to do the fun part right now
2. The real reason, which is that the string compression allows some of the shorthand strings to be given custom values, and I'd rather that be possible midway through the program
 
11:07 PM
@RedwolfPrograms so you mean uncompressing then
 
I guess yeah. I don't know much interpreter/compiler terminology
 
Tokenization -> Parsing -> Code Generation
 
I have made it way simpler though by removing any UTF-8 stuff and using Unicode code points directly
 
That's the three steps
Tokenisation is where you give everything a name
 
I know that much I just don't know much about what parsing does because I've never gotten that far :p
 
11:09 PM
You say "this string of digits is a number"
And "this here bracket is syntax"
Parsing is grouping these tokens into constructs or structures
You say "this bracket and this number followed by this block start and next 3 tokens is a structure"
And "these tokens between one token and another is another construct"
 
That's useful, thanks!
 
Code generation is where you actually do the execution
You go through each construct (for lack of better word) and evaluate it
Trust me I know this...my software course at school from 2001 taught us the stages of interpreting/compiling
 
I just came up with something kind of cool
 
@RedwolfPrograms take a look at Vyxal's parser. You might get some ideas
 
I'm making use the following byte as a code point between 80 and ff, or if it's lower than that it takes the byte after it as well so you can compactly as possible represent any character from 0080 to 7fff using that one operator
 
11:40 PM
Nice
Have you considered going the way of Stax for extra golfiness?
 
You mean compressing the program?
Because that ain't possible here
 
No?
 
This is a standard 256 command language
Using the whole code page for commands
 
The entropy would probably mean the compression ratio would be small enough to be worthless most of the time
I am considering (for a future language) using fractions of a byte for more common operations, though
 
Oh
 
11:47 PM
Tokenizer finished
 
Poggers
Put it on gh
 
The tokenizer?
 
Yes
 
It is a mess but okay
Also note that since every single character is a token other than string literals it's kind of boring
and here's tree :p
 
How to run js on local computer offline?
 
11:52 PM
Developer tools on about:blank works, I guess node probably would too
 
Is your ctrl and alt key really long?
 
Just over twice the width of a normal key, so average
 
They look long to me
 
looks at ceiling in case Lyxal is there
 
Hi.
 
11:55 PM
Since there's no windows key there's room for long modifier keys. I like it, since I use them for all sorts of stuff.
The replacement for the windows key, the search key, is where caps lock would usually be (but you can rebind it to caps lock)
 
Long keys
 
Is that an HP chromebook? Looks a lot uglier than mine.
Same key sizes though.
 
Lol yes it is
 

  last day (113 days later) »