I see was recently added, to refer to "Railway-oriented programming" (which I have to admit was new to me, not having come across the term when I was using functional Scheme).

However, the initials ROP have other uses, notably "Return-oriented programming" (often used in exploit code), so perhaps this name isn't the best choice.

Can we rename the tag now, so that we don't end up having to deal with mistagged return-oriented programming questions later?

I don't have experience of doing a tag rename, but I'm willing to learn how it's done...

  • 3
    \$\begingroup\$ I can't see any questions with this tag. If you want to 'rename' it you can delete the tag from the existing question and replace it with whatever you want. \$\endgroup\$
    – Peilonrayz Mod
    Jun 13, 2019 at 21:20

3 Answers 3


Burn it

Before thinking about another name, let's see if the tag is useful at all. And I don't see a use for it. If you want to use either railway- or return-oriented-programming, fine, leave a note in the question. But we already have and I'm not a fan of having a tag for each variation within it.

Note: at the time of writing this answer no questions are tagged as . This means the tag has left the site already, for now.


I edited that question without having been aware of this Meta question. I would like to give a chronology for the record:

  1. I saw it at Rev 2, and had the confusion as you. The first search engine hits for "rop" (e.g. Wikipedia) led me to believe that it stood for "Return-oriented programming", which made no sense in this context. The tag had no description, and Stack Overflow did not have such a tag. So I left a comment asking for clarification.

  2. The author replied that it stood for "Railway-oriented programming".

  3. I did some research, and replaced the tag with a combination of and in Rev 8.

  4. The author added back the tag in Rev 9.

  5. I didn't feel like escalating an edit war over the existence of the tag. I reasoned that if the tag was going to persist, we should do it properly, so I renamed it to (both to disambiguate the abbreviation and to make it consistent with and ), and added a description to the tag.

  6. Then I saw this Meta post.

Here are the existing Code Review questions where railway-oriented programming is mentioned:

So, should the tag remain? It's debatable.

  • Against: It's not (yet) a well known term, the way object-oriented programming and aspect-oriented programming are. Most of the search engine hits refer to individuals' blogs, rather than established publications. It seems to be trending up, but I'm not sure whether it's "in the dictionary" yet.

    The combination of and might be sufficient.

  • For: To make railway-programming work, you have to commit to using it consistently and pervasively throughout your code, much like a programming framework. So, it is a distinct programming style worthy of attention. It's also a design pattern. If can have its own tag, why shouldn't also get the same respect?

I can be persuaded either way. I'm OK with applying the new tag to some of the aforementioned questions.

  • \$\begingroup\$ "If observer-pattern can have its own tag" Personally I'm against tagging all patterns, and we've talked about this briefly, but perhaps it's time to sort out such tags now to prevent them setting bad precedent for other tags. \$\endgroup\$
    – Mast Mod
    Jun 16, 2019 at 12:17
  • \$\begingroup\$ Thanks for sharing the background - it helps explain the different experiences of people searching for it, for one thing! I agree completely with the final sentence - I'm equally on the fence as to whether it should be tagged as a programming style (I'm not sure that observer-pattern is a great precedent, though). \$\endgroup\$ Jun 17, 2019 at 8:32

I'm the sinner adding the "ROP" tag - changed to "railway-oriented" by 200_success. I had no idea of the ambiguity, and didn't investigate further about it, because I thought it was a more well established term and pattern than it apparently is.

My primary references are:

The documentation for the Result<'t, 'err> type


Railway Oriented Programming

I agree with 200_success in that it's a very rigid and strong pattern in that you can't just follow it to some extent. Either you use it, and it will determine the design and structure of your code or you don't. I think the tag should live because it has the same relation to functional programming as many of the software design patterns have to OO-programming.

I don't think that the frequency of use should determine the existence of a tag. Instead it should be how strong the relationship is between different questions with the tag attached.


You must log in to answer this question.

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