@emanresuA for anyone wondering what happened to this: all our "golflang creation myths" are kinda based on the idea that golfing languages emerged from the void fully formed, a platonic ideal of a golfing language, when in reality they took years of feedback and iteration to become what they are today - and it's kinda difficult to frame a history around this, especially when you're also trying to highlight that there were plenty of langs which were abandoned partway through this
also I may end up having to split this into two separate blog posts if I'm not careful
@ATaco it must be nice not needing extra dummy types to achieve a 1/2 arg split :p
because the vyxal 3 way is:
record Nil => }
extension AddFunny given
lhs as Nil,
rhs as num
does
$rhs 2 +
}
extension AddFunny given
lhs as num,
rhs as num
does
$lhs $rhs +
}
5 `Nil` $@AddFunny print
5 7 $@AddFunny print
I read that as one-half arg split for a second or two
also I feel like there is a qualitative difference between a function taking a flexible number of arguments and one being type overloaded on a fixed number of arguments where some of those arguments can be a unit type :P
granted that is presumably the closest you can get with a stack language
@UnrelatedString There's currently a section on hypothetical fourth-generation languages, and (semi-)recent ideas that could potentially be (/ have already shown themselves to be) quite powerful, might end up splitting that
@lyxal ...come to think of it, a greedy/ambiguous approach could be possible where it pops two arguments and does the binary overload if they're both nums but pushes the bottom argument back and does the unary overload if only the top is a num
I tried writing something about it at some point, though it was more from a perspective of having some value in "purity" which is something I don't think I was right about at the time
presumably the workaround would be something like tucking a dummy value under the top and then getting rid of it afterwards, so yeah, you would probably use a unit type with literal extra steps
@emanresuA e.g. compression (vyncode, jcram), static typing (catstruct/newspeak although those never got beyond prototyping, more recently iogii to a degree (I need to look more into iogii, there's some ideas there that looked quite interesting from a first glance but I should probably try and understand how they actually work)), nondet stuff e.g. nekomata, fracbytes, etc
@emanresuA FWIW Nekomata isn't the first nondet golfing language, it's just the first to combine nondeterminism with other aspects of modern golflang design--Brachylog is occasionally competitive despite design goals explicitly prioritizing aesthetics and Prolog-like structure over raw golfiness, and Perhaps was going to be modernized-Jelly-plus-nondeterminism but I never actually got around to implementing the nondeterminism or SBCS syntax :P
@UnrelatedString I'm aware of that, yeah, and I'm definitely going to mention brachylog (and if you want to talk about your plans for Perhaps lmk) but Nekomata's model seems extremely powerful, especially for brute-force things where you get, sort of, implicit maps / cartesian products over all possible values
Its model is IIRC exactly the same as Brachylog and Perhaps's models, minus the constraint logic Brachylog has, but the constructs for manipulating it are very elegant
The one stupid thing I was going to innovate with Perhaps that I also kinda got hung up on planning for when I stopped making progress was some kind of tagging for infinite lists that would turn that implicit Cartesian product into traversing a table of pairs by antidiagonals, which would save some effort for some thing where in Brachylog you'd do something like minimize the sum of two variables or whatever, but I forget how Nekomata handles that kind of thing--probably just individual builtins
also the more I look into this the more I feel like Vyxal 2 is the PHP of golfing languages - a kitchen sink of builtins which sometimes are very useful and sometimes are very not, and a lot of lingering jank. It'll be interesting to see how v3 goes, but at the time it was getting started I don't think I understood quite how necessary (mostly) starting from scratch was
Basically I think we need more golfing languages with different ideas being thrown out
I have a golfing language which I have been quietly designing (though not yet implementing) for about a year, though I don't think it'll be more competitive than say Jelly
@lyxal one might say a full commitment's what you should be thinking of (something you don't get from many other golfers). If you don't spend time on your golf language, then there's something you should understand: you're never gonna push it up, people are never gonna golf it down, people are never gonna run programs in your language
Multiplication in \$\mathbb{Z}[(-1)^{1/2}, (-1)^{1/4}, (-1)^{1/8}, \cdots]\$
Objective
Given two (complex) numbers in the adjoint ring \$\mathbb{Z}[(-1)^{1/2}, (-1)^{1/4}, (-1)^{1/8}, \cdots]\$, multiply them and output the result.
I/O format
The inputted numbers and the outputted number shall be...
Could we just not use the Chat feature? If things get that out of hand then TILT - Game Over - put in a new quarter and start again. I don't see a point in embalming bad discussions in little boxes that most likely won't get looked at, except by people trying to scrape personally identifiable inf...
There are 10 types of people in the world: • Those who understand binary • Those who don’t • Those who thought this was going to be another ternary joke • And those who truly knew this joke would be in quaternary.
There are 10 types of people in the world: • Those who understand this joke is in base f_omega(99^99) • And the rest are different ways people do not understand this.
___
There are 20 types of people in the world: • Those who don’t understand why this joke is in base 1/2.
for challenge #6, is there a way i'm supposed to duplicate the string i'm testing or is the solution really to just use 2 identical string literals like 'APL'≡⌽'APL' ?
If this question were a question on this site, should it be tagged restricted-source or code-challenge, or something else?
https://puzzling.stackexchange.com/questions/129034/an-extremely-simple-programming-language/129041#129041
Assume we have added objective constraints and scoring function so ...
Would this be a duplicate of the bignum bakeoff reboot? Or maybe largest number printable?
It's specifically asking for solutions in a specific very limited esolang, though I believe the language is Turing-complete.
The language is similar to brainfuck but with named variables rather than a tape.
@mousetail'he-him' "Identical to", but yeah :P It's like JS having == and ===, APL has = which applies to scalars and ≡ which applies to the whole array.
I wonder how the APL challenge code judges the fixed output challenges. Does it check if certain substrings appear in the code? The output is just 1 so can't really tell much from that
the algorithm for now is 5 points for initial solution; as many points as imrpovement bits for each improvement; 10 points for each solution in an approach you submitted
For example, you could have one solution using some standard library module and another doing it raw. But in another language the distinction doesn't make sense
There will be cases where some users view some solutions as invalid, chating, boring, whatever, and another group thinks they are smart and invotive. And you won't be able to make any decission without angering at least some people
Suggestion: Add an option to optionally add TIO or ATO links to solutions. It's easier to improve a solution if everybody doesn't need to write their own test harness
Ok that would explain the slowness, though at least it will be an easy enough issue to fix when you need to and doesn't indicate anything wrong with your code
tbh the hard part is that when you are hosting a complex app, you have to ensure everything either changes to the new host gracefully or is stopped during the migration
1. There will be a secret recursion counter 2. You cannot call any function that is defined after the function you defined 3. You cannot define functions inside functions
Anyhow, my approach to spoiler is vastly different to my problem 10 answer, and tbh the result of spoiler doesn't really go to informing my p10 answer either :p