Doch, in allen Beispielen hat
ifeinen Rückgabewert, alle Beispiele zeigen echteif-Ausdrücke.
if vermittelt eine Wertzuweisung, so würde ich das eher formulieren. if selbst kann außer true oder false (sog. Boolsche Werte) keinen anderen Wert liefern aber if macht das implizit und jeder Versuch einer solchen direkten Zuweisung wird unweigerlich mit einem Syntaxfehler quittiert.
Ebensowenig prüft do einen Ausdruck. Schon der Begriff do-Expression ist irreführend, weil do keinen Ausdruck prüft, sondern lediglich das letzte im Block notierte Statement liefert -- ohne es zu prüfen.
Schönen Sonntag.
 nicht angemeldet
 nicht angemeldet Orlok
 Orlok Gunnar Bittersmann
 Gunnar Bittersmann Matthias Apsel
 Matthias Apsel Rolf B
 Rolf B JürgenB
 JürgenB MudGuard
 MudGuard