Ого, грубое название для поста. ;)

Иногда простые вещи требуют немного больше усилий в Elm, но в награду вы получаете ИДЕАЛЬНЫЙ КОД, который никогда не ломается. Трудно уложить в голове, что это значит. Причина использования Elm в том, что вы можете лучше спать по ночам, зная, что любой компилируемый код будет работать. Навсегда. Даже если вы наймете младшего программиста и позволите ему все рефакторить. Если они скомпилируют его, он все равно будет работать! Удивительный!

Да, значит есть компромиссы, и вы наткнулись на один из них. Когда вы взаимодействуете с внешним миром, например. веб-браузере, вам необходимо убедиться, что данные, которые вы возвращаете, соответствуют вашим представлениям. Вот почему Elm никогда не падает. Это заставляет вас проверить.

Кроме того, если вы никогда не занимались функциональным программированием, потребуется некоторое время, чтобы осознать это. Однажды получив, трудно вернуться.

В любом случае, проверьте решение вашей проблемы. Я думаю, это делает то, что вы хотели. Или то, что я хотел бы, во всяком случае!

PS вы бы не использовали Union Type, как бы они ни были круты!

Реактивный «выбор» в Elm:

https://runelm.io/c/7me