Size: a a a

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

2020 December 09

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
А в чём проблема-то? Визарды как раз максимально просто на эльме делать?
источник

AP

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

AP

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

AP

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

МВ

Михаил Варнавский... in Elm Lang сообщество разработчиков
Всем привет. Ну подскажите пожалуйста, как можно реализовать следующую штуку, а то с типами данных затупил чуть?
Условно у меня есть тип
Msg = KeyPressed Int
, я хочу подвесить это сообщение на onClick кнопки, но та часть, что должна передаваться в Int определяется в другом модуле. Т.е. мне нужно передать туда ряд параметров и значение, но так, чтобы оно было просто
KeyPressed
, а внутри уже стало, например,
KeyPressed 5
. Когда пытаюсь это сделать, компилятор ругается... то на то, что якобы я пытаюсь вызвать функцию, то, что возвращаемый тип не тот (
Html (msg -> Int)
, вместо
Html msg
). Собственно вопрос: как правильно это описать в определении функции, как правильно передать и как правильно потом это дело дополнить необходимым интом?
источник

МВ

Михаил Варнавский... in Elm Lang сообщество разработчиков
хз, надеюсь понятно объяснил )))))
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
view toMsg ... = ...
  onClick (toMsg 42)

view KeyPressed
источник

AP

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

МВ

Михаил Варнавский... in Elm Lang сообщество разработчиков
ну что-то вроде.
источник

МВ

Михаил Варнавский... in Elm Lang сообщество разработчиков
Если так можно, конечно. Суть задачи: пишу пагинацию, в академически целях, формирование Html вынесено в отдельный модуль, чтоы можно было потом переиспользовать. Туда я передаю необходимые параметры и, соответственно, нужно передать Msg, который должен вызываться при нажатии на кнопки. Это Msg дополняется исходя из номера страницы
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Или onClick 42, а потом уровнем выше Html.map KeyPressed
источник

AP

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

type alias Msg = Int

view : .. Html Msg
   ..
   [onClick page)
   ..

module Main where

import Paginator

type Msg
 ...
 | KeyPressed Int
  ...

view : ... Html Msg
   ..
   Html.map KeyPressed <| Paginator.view ...
   ...
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Обычное дооборачивание сообщения в конструктор другого сообщения
источник

МВ

Михаил Варнавский... in Elm Lang сообщество разработчиков
ага, спасибо, буду разбираться. Вот в части Html.map еще плаваю
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Тут вверху писали про проблему тестирования эффектов. У нас тоже такая проблема есть и не особо она решаема, но в некоторых случаях обходимся вот таким решением:
Команды не прозрачны, но при этом экуалити чек работает с ними точно так же как и с любым другим типом. В некоторых случаях можно создать ожидаемую команду и проверить что она равна тому что из апдейта пришло
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Главное не скатиться в примитивизм и не проверять что 1 + 1 = 1 + 1
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
В этой связи мне нравится подход рефрейма, где эффекты можно создавать самому и при этом они будут такими же «нативным». Самое приятное что эффект обновления стейта сделан не как исключение и особый случай, а как точь в точь такой же эффект как и любой другой
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
И в итоге из «аптейтера» мы получаем «список» эффектов, среди которых есть и обновление стейта и хождение в сеть и Локал сторадж... и все представлено как мэпа и можно любые проверки делать
источник

SO

Sash Osh in Elm Lang сообщество разработчиков
Denis Krivosheev
В этой связи мне нравится подход рефрейма, где эффекты можно создавать самому и при этом они будут такими же «нативным». Самое приятное что эффект обновления стейта сделан не как исключение и особый случай, а как точь в точь такой же эффект как и любой другой
апдейт стейта это эффект?
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Но да, элм считает что мы «недостойны» сами эффекты создавать
источник