In my language, all subjunctive considerations are swept into the concept of the role, where the implicit IF statement allows us to deal with the issue without the complexities of IF statements. I believe that roles will address the vast majority of cases that would otherwise be tackled with IF statements. In much the same way, I started with the conventional concept of a loop and boiled it down to a simpler, less powerful concept that still addresses the great majority of the problems that I expect users to encounter. For too long we have been hamstrung by the belief that a programming language must provide general-purpose solutions to all conceivable problems. That kind of generality is achieved at the price of an over-reduced vocabulary coupled with a fascist grammar.
Every language trades off expressive power against utility and ease of learning.
For these early stages of language design, we need to consciously accept the need to simplify our languages. When our understanding is perfect, we can design perfect languages. That is, the user of my language can still put together expressions that, while perfectly grammatical, might still yield undesirable results. Even in these cases, I feel a responsibility to provide some protection better than a brusque error message. Whenever an expression gets itself into trouble, I poison the results of that calculation and keep going.