Size: a a a

Elm Lang сообщество разработчиков

2021 February 03

AY

Alexey Yurchenko in Elm Lang сообщество разработчиков
А, такое я использую
https://github.com/jamesmacaulay/elm-graphql
Это решает вопрос с запросами на клиент. И эта штука просто дает либу для запросов. Это как раз тот самый тупой кодоген

мы же так то про роуты изначально
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
мы про обратный парсинг
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
То, что тип называется Route, вообще ничего не значит
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
См. начало беседы
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Переслано от Max P
Привет, такой вопрос...

У меня есть тип:


type Route =
Ra
Rb
Rc
NotFound


Есть <select> тэг, который в <option> отрисовывает три опции. У option value - строковое значение (можно по другому?).

соответственно, получается селект:

<select>
<option "string-ra">
<option "string-rb">
<option "string-rc">
</select>


Когда я кликаю на одно из значений, мне нужно превратить строковое значение в тип Route, для этого у меня есть декодер stringToRoute:


case optionValue of
case "string-ra" ->
...
case "string-rb" ->
...
case "string-rc" ->
...
_ ->
 NotFound
 приходится иметь дело с _ , так как декодируем строку


и тут я не могу решить такую проблему:
если я добавляю новое значение в Route , то разумеется мне бы хотелось, чтобы компилятор сказал: алло, ты забыл добавить его в select, и забыл декодировать его в stringToRoute.

можно ли это как-то решить?
источник

AY

Alexey Yurchenko in Elm Lang сообщество разработчиков
Aleksei (astynax) Pirogov
мы про обратный парсинг
Не значит в контексте вопроса. Но глобально это проблема у человека
источник

AY

Alexey Yurchenko in Elm Lang сообщество разработчиков
Он говорит, что может забыть добавить case. Там таких мест для забыть десяток
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Есть select на форме, нужно его смапить в тип. И иметь подпорку от компилятора в виде case exhaustiveness анализа
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Я привёл способ, при котором можно забыть в одном месте
источник

MP

Max P in Elm Lang сообщество разработчиков
Alexey Yurchenko
Он говорит, что может забыть добавить case. Там таких мест для забыть десяток
в остальных-то местах у меня case route of , поэтому компилятор подсказывает
источник

MP

Max P in Elm Lang сообщество разработчиков
только когда со строкой имею дело в селекте, вот тут молчание (логично)
источник

AY

Alexey Yurchenko in Elm Lang сообщество разработчиков
Max P
только когда со строкой имею дело в селекте, вот тут молчание (логично)
Если код от real world app то там можно забыть еще в update так же
источник

AY

Alexey Yurchenko in Elm Lang сообщество разработчиков
источник

MP

Max P in Elm Lang сообщество разработчиков
Alexey Yurchenko
Если код от real world app то там можно забыть еще в update так же
я там немного иначе сделал, не стал писать _ _
источник

MP

Max P in Elm Lang сообщество разработчиков
получилось больше символов) но лучше уж так, зато ругается если забыл
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Я вообще не пойму, в чём проблема такое сделать один раз и спать спокойно?
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Ох уж эти ваши "real world apps" мифические. Я не забываю, например %)
источник

MP

Max P in Elm Lang сообщество разработчиков
Aleksei (astynax) Pirogov
Я вообще не пойму, в чём проблема такое сделать один раз и спать спокойно?
выглядит нарядно, буду пробовать, Спасибо
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Соответственно, в select нужно класть toString
источник