Yes, and the inventor of the language eventually removed ELSE from his dialects, amusingly. These days he says that his code has very few conditional statements.
I think the tactic strategy to achieve this is to confine conditional branches in a few well chosen words.
For instance if you have a word SORT that sorts the top pair on the stack, which has to have a branch:
: SORT 2DUP < IF SWAP THEN ;
then you can build "if-less" MIN, MAX and ABS:
: MIN SORT NIP ;
: MAX SORT DROP ;
: ABS 0 SORT SWAP - ;
The GForth documentation addresses this. [0] Forth is simply adopting a different use of 'then' than the one more commonly seen in programming languages, but it's still faithful to English.
Yes, Forth is stack-based RPN so "IF" naturally comes after the test; "THEN" marks the end of the block; so if you want "ELSE" it ends up in the middle to let you nest conditions.
: /CHECK DUP 0= IF ." invalid " DROP ELSE / THEN ;
There's a language where THEN basically means ENDIF... Forth, if memory serves me right?