Size: a a a

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

2021 January 30

NP

Nikita Puzankov in Elm Lang сообщество разработчиков
всем привет, а у elm есть тулы для форматирования, как например cargo fmt у раста?
источник

AP

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

AP

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

NP

Nikita Puzankov in Elm Lang сообщество разработчиков
ty
источник
2021 February 03

MP

Max P in Elm Lang сообщество разработчиков
Привет, такой вопрос...

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


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.

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

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Не скажет. Потому что возможных значений строки бесконечное количество
источник

AP

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

AP

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

AP

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

MP

Max P in Elm Lang сообщество разработчиков
сорян, это я в примере так написал, у меня там maybe route как раз
источник

MP

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

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Можно применить паттерн "reverse map" :)
источник

MP

Max P in Elm Lang сообщество разработчиков
🙄
источник

AY

Alexey Yurchenko in Elm Lang сообщество разработчиков
Или использовать codogen, но его никто для elm еще нормального не придумал 😁
источник

AP

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

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
К Эльму адаптируется на раз
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Суть: имея список значений Route и функцию "Route -> String" получаем "String -> Maybe Route"
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Перебором по списку и сравнением полученных из элемента списка строк со входной строкой
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Но в Эльме придется следить за списком значений. В Хаскеле-то есть класс Enum, он автоматически даёт перечень всех значений.
источник

AY

Alexey Yurchenko in Elm Lang сообщество разработчиков
В таком стиле там для одного роута нужно правку делать в 10 местах. Это codegen или как поступили в elm spa роуты на js стороне
источник