Basically, what the title says. Is creating a new language specifically for Golfing, with some predefined names and imported methods (I'm talking about my PYG language, but there are possibly others affected), illegal (or considered any other kind of wrong)? I'd like to hear your opinions on this, since there hasn't been a clear statement on the topic.

The specific answer I'm talking about is this one: Merge two sorted lists

  • 2
    \$\begingroup\$ I've never seen anything that says it's "illegal", but others are free to use their votes as they see fit. Note that undergroundmonorail never claimed it was illegal, he just said he would downvote such answers. (unless some comments have been deleted that I can't see) \$\endgroup\$
    – Geobits
    Apr 8, 2014 at 18:13
  • \$\begingroup\$ @Geobits That's kind of why I'm asking, to get a statement on whether its allowed or not. I'm not claiming that he actually stated that it was disallowed, I'm just saying that it might be for the best to get an official rule on this. \$\endgroup\$ Apr 8, 2014 at 18:20
  • \$\begingroup\$ Sorry, was actually referring more to Evpok's comment where he said the "rule was invalid". I misread, thought you had made the comment. \$\endgroup\$
    – Geobits
    Apr 8, 2014 at 18:54
  • \$\begingroup\$ The only real rule with new languages for golfing is that they're only valid on question asked after the language was invented. If you make a change to improve its abilities in some area those changes are also only valid on questions that come after the change was made. So you can't add a 99 bottles command and then go and use it on an old 99 bottles question here. That's my understanding of it anyway. \$\endgroup\$
    – Gareth
    Apr 8, 2014 at 20:14
  • \$\begingroup\$ @Gareth I agree with you, even though it's a bad example. If you want to do that, you might as well use HQ9+ \$\endgroup\$ Apr 9, 2014 at 5:50
  • \$\begingroup\$ I read elsewhere that a language must exist BEFORE the challenge was posted. The obvious solution is to not post a challenge when a language exists that can solve it in 1 character, or just restrict that particular function. \$\endgroup\$
    – Rainbolt
    Apr 9, 2014 at 14:16
  • 1
    \$\begingroup\$ @Rusher Not everyone's aware of those languages. A solution might be to edit questions that ask these questions to explicitly ban these languages \$\endgroup\$ Apr 9, 2014 at 14:24
  • 3
    \$\begingroup\$ @Synthetica Even if they aren't aware, if there is a golfed language or function that exists solely to solve the challenge you asked, it was probably a bad challenge anyway. \$\endgroup\$
    – Rainbolt
    Apr 9, 2014 at 14:31
  • \$\begingroup\$ If "voting is different on meta", does that mean I should downvote to indicate that I disagree that these languages should be illegal (as the question title asserts)? \$\endgroup\$ Apr 9, 2014 at 20:01
  • \$\begingroup\$ @luserdroog I thought it was clear from the fact that I have my own 1-1 language, but I support 1-1 languages. So downvote=should be illegal. \$\endgroup\$ Apr 9, 2014 at 20:03
  • \$\begingroup\$ I was more complaining about "the voting on meta" status quo, but it might be better to change the question title to '1 to 1 language mappings "legal"?' so the meaning of votes ('+'=support, '-'=oppose) is more straightforward. \$\endgroup\$ Apr 9, 2014 at 20:23

3 Answers 3


As elaborated in the comments, the complete list of rules (which applies to libraries too) of which I am aware are:

  • The language (or library) must have existed prior to the challenge. This is to prevent the no-longer-funny loophole where you factor-out your entire program and call it a new language.

  • An interpreter/compiler should be freely available. This is somewhat relaxed for available-but-not-free languages, for which some output or screenshot is usually desirable if not required.

Aside from that, all's fair, AFAICT.

  • 4
    \$\begingroup\$ "language must exist and others must be able to verify it runs" sounds like a fair one. If you care enough to actually make it (as I do with Rebmu) that should count for something. In fact, the independent-verifiability-of-a-solution seems like that should be a formal rule. \$\endgroup\$ Apr 9, 2014 at 22:57
  • \$\begingroup\$ "The language (or library) must have existed prior to the challenge." This alone implies that this new dialect should be considered illegal. Although it isn't exactly preventing the old joke of assigning a single-letter command to do a whole task, it is still kinda going in that general direction. GolfScript at least has a user/fan base beyond just Code Golf (where it started). I think that the disclaimer at the top of the interpreter script kinda drives away any hope you could possibly have of getting that. \$\endgroup\$
    – Claudia
    Apr 21, 2014 at 21:18

Personally (obviously), I'm not a fan. In my opinion it goes against the spirit of challenging yourself to get a lower byte count if the language you're using is an existing language with the keywords shortened. In my eyes the only difference between that and using a language specifically designed to solve the challenge in a single character (e.g. HQ9+ for "write a quine") is scale.

I wouldn't support a rule against these languages. My idea of what constitutes a "good answer" isn't universal. If I downvote an answer because I don't like it but it gets a positive score overall, then it's a good answer. So sayeth the community, pretty much the only entity around here with an opinion that matters. I'm part of the community, so I throw my vote in, but your opinion of "this is 100% okay" is exactly as valid as mine.

The other(, less important,) reason is that it would be really, really difficult to make a fair rule. I don' think it's a good idea anyway, but even if I did: Where do you draw the line? Informally, in my head, I think about it the way I mentioned in the comments on your answer: The commands map 1-to-1 with the commands of another language. But that doesn't really work if you try to formalize it.

  • As I understand it (it's possible that I'm very wrong) a significant number of J commands are taken directly from APL. Is J a valid language?

  • In PYG, R literally means range. They're the same thing. But P doesn't meant print. P means "print every argument to this function", a construct that doesn't exist by default in python. You have to define it in python, but in PYG it's already there. How much of a language has to be taken from another before it becomes invalid?

I'm not convinced that these are answerable questions, objectively. I have ideas of what I like and don't like, but it wouldn't even be possible to make those ideas into fair rules.

So while I don't personally like languages like PYG, I don't think we {sh,c}ould have rules against them. People will upvote what they like and downvote what they don't, and at least for now that seems to be working out (for this specific issue, at least).

On a more personal note, sorry for starting shit in the comments on your answer. Almost all of the time, I downvote for this kind of thing silently (I know that you're supposed to leave a comment explaining how the answer could be improved, but "use a different language" doesn't seem constructive), but I was truly conflicted by my inability to upvote your python answer and downvote your PYG one.

  • \$\begingroup\$ On a more personal note, sorry for starting shit in the comments on your answer. No problem, I just thought it was good to have some comments on this from the community. (I'm also working on a non-syntax compatible version of the language by the way, that compiles to Python instead of executing as Python) \$\endgroup\$ Apr 9, 2014 at 17:39
  • \$\begingroup\$ J is different from APL in significant ways; APL and J have about the same relationship as Pascal and C. \$\endgroup\$
    – FUZxxl
    Feb 9, 2015 at 22:16

As the creator of Rebmu I am of course a bit biased to say "no".

(Note that is a language that is actually in it to golf for the long haul. I want to get it refined to the point of a feature-freeze, and package it with its host as a half-megabyte single cross-platform interpreter. Then I'll take on any other languages...golf-specific or not...in the only way to play "golf": in several consecutive "holes"!)

I do think the thing that should be discouraged is "uninterestingness", and agree with @Geobits to say that's pretty much in the eyes of the downvoters. Making a language called 99b to print 99 bottles or not, which is sensitive only to the first bit in the input and claiming you wrote a 1 bit program, is not what I would call not interesting or funny. But such answers aren't common enough to worry about needing a rule besides downvotes for.

One thing I've asked in general that if anyone is going to post a Rebmu solution that is not substantially different than its corresponding Rebol, to just include that in the Rebol answer and not post it separately. Just present the character counts in the heading as Rebmu (x chars) / Rebol (y chars). I should probably mention that in the README.

UPDATE: I will mention my agreement with @luserdroog that whatever your solution, others should be able to independently verify that it actually solves the problem. If you invent a language and want to submit it as your solution form, it needs a GitHub and toolchain etc. That's a bar for effort that at least keeps solutions from being insincere enough to not even exist. The "99b" language above should be allowed and voted on if people like it or don't, but just saying "in my theoretical language called 99b" and never taking the time to write said language might be decent grounds for deletion.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .