Подозреваю, что способ, описанный DaneSoul может быть полезным в случае, когда интересующие элементы кортежей расположены не в позициях 0, 1 и 2, а, скажем, в позициях 3, 7 и 16.
Хотя я бы сначала задумался о корректности выбранного подхода, если он заставляет работать с такими кортежами.
Я могу, конечно, ошибаться, но с тех пор как я поверхностно познакомился с хаскеллем, мне не перестаёт казаться, что это наоборот — промисы были ну очень сильно вдохновлены его монадой Either. А точнее, они её прямая (со скидкой на асинхронность) реализация, призванная вытащить асинхронный код из того callback-hell'а, в котором он ещё недавно пребывал. Хотя если судить по тому, что давеча завезли async/await — монады пришлись js-сообществу не очень-то по вкусу, и оно предпочло и дальше по-старинке try-catch'ить.
Для данного конкретного, естественно, if'а достаточно. Даже просто && обойтись можно. Это была просто демонстрация того, что switch требует строгого равенства, и если об этом забыть, можно получить неожиданный результат.
А сам switch(true) именно с необходимостью приводить к boolean я нередко наблюдал в ситуациях, подобных вот этой:
Хотя я бы сначала задумался о корректности выбранного подхода, если он заставляет работать с такими кортежами.
А сам switch(true) именно с необходимостью приводить к boolean я нередко наблюдал в ситуациях, подобных вот этой: