Deprecate `choose`

I’ve opened an issue about getting rid of choose here. I’m not quite sure if this is a better place for initial feedback on the idea.

Anyway, my suggestion is to deprecate choose elements. Why?

  1. They are not necessary.
  2. They increase style complexity and thus decrease code readability.

Of course, we will retain if else-if and else elements, but, recalling from earlier conversations, it shouldn’t be necessary to have a surrounding choose element. Am I right here, @cormacrelf, @Frank_Bennett?

If my assumptions are right here, I suggest to, in a first step, declare the choose element optional. Then, deprecate it a couple of releases later (say 2.0). It should be possible and rather simple to change existing styles automatically, or am I missing something here?

On this, while I think about it, if we were to do this (I don’t know if we should; don’t have an opinion ATM), the approach in the schema would be something like this conceptually:

conditional = choose | nochoose [Denis' first step]
conditional = nochoose [Denis' second step]

conditional = choose | nochoose [Denis' first step]
conditional = nochoose [Denis' second step]

I’m not following what you are meaning here.

Another thing in favor of deprecating choose is that development of the spec interpretation has made its behavior different from other types of nodes. The children of choose are not treated as an implicit group. I think removing choose would make that more obvious.

Just explaining how to implement it in RNC for future reference, if it comes to that, since you need a choice of two patterns initially, and then to remove the deprecated one.