Size: a a a

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

2020 December 06

AP

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

AP

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

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
transpose : List (List a) -> List (List a)
transpose l =
   case conses l of
       Just ( x, xs ) ->
           x :: transpose xs

       Nothing ->
           []


conses : List (List a) -> Maybe ( List a, List (List a) )
conses =
   List.foldr
       (\i acc ->
           Maybe.map2
               (\( x, xs ) ( y, ys ) ->
                   ( x :: y, xs :: ys ))
               (uncons i)
               acc
       )
       (Just ( [], [] ))


uncons : List a -> Maybe ( a, List a )
uncons l =
   Maybe.map2 Tuple.pair (List.head l) (List.tail l)
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Впрочем, мучения в основном из-за того, что в Elm всё огорожено и Maybe кругом, а паттернматчинг — куцый. Так-то алгоритм был бы у меня и в хаскеле такой же :)
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Во, теперь большая часть работает.

Даже undo/redo есть (надо придумать, сколько глубины иметь, пока с потолка взял десять шагов). Осталось добить палитр переключение и скачивание в SVG/PNG добавить.

Нескучно провёл выходной :)
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Приятный дизайн))) навевает что-то от редхат Линукс начала двухтысячных)
источник

SO

Sash Osh in Elm Lang сообщество разработчиков
Aleksei (astynax) Pirogov
Во, теперь большая часть работает.

Даже undo/redo есть (надо придумать, сколько глубины иметь, пока с потолка взял десять шагов). Осталось добить палитр переключение и скачивание в SVG/PNG добавить.

Нескучно провёл выходной :)
вполне можно было бы повесить в какой-нибудь музей современного искусства
источник
2020 December 07

SO

Sash Osh in Elm Lang сообщество разработчиков
Это нормально что две подписки Time.every 5000 Tick и Time.every 5000 Tick2, включенные в разное время, например вторая через 2 секунды после первой, будут срабатывать одновременно?
В то время, как если изменить вторую на `Time.every 5001 Tick2`они начинают работать совершенно по другому, разница между тиками и будет 2 сек.
источник

K

Kir in Elm Lang сообщество разработчиков
Aleksei (astynax) Pirogov
Во, теперь большая часть работает.

Даже undo/redo есть (надо придумать, сколько глубины иметь, пока с потолка взял десять шагов). Осталось добить палитр переключение и скачивание в SVG/PNG добавить.

Нескучно провёл выходной :)
Класс!
источник

K

Kir in Elm Lang сообщество разработчиков
А я тут октодерево на хаскелле сделал. Но это не тот канал, конечно
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Sash Osh
Это нормально что две подписки Time.every 5000 Tick и Time.every 5000 Tick2, включенные в разное время, например вторая через 2 секунды после первой, будут срабатывать одновременно?
В то время, как если изменить вторую на `Time.every 5001 Tick2`они начинают работать совершенно по другому, разница между тиками и будет 2 сек.
Заучит, как баг. Предположу, что в недрах рантайма интервал используется как ключ и несколько подписок просто вешаются на один таймер
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Строго говоря, "every" не обещает, что будет ещё и внятный "since". Но я бы всё равно зарепортил :)
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Вся эта свистопляска с ключами может быть обусловлена тем, что подписки на таймер перенакатываются на каждый вызов subscribe, и интервал-ключ позволяет тупо сохранить ритм
источник

AP

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

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Так и вышло, интервал работает как ключ
источник

AP

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

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
https://github.com/elm/time/issues/25 вот ишшуй по теме. Так что ждём, пока Эван сподобится
источник

SO

Sash Osh in Elm Lang сообщество разработчиков
Aleksei (astynax) Pirogov
Заучит, как баг. Предположу, что в недрах рантайма интервал используется как ключ и несколько подписок просто вешаются на один таймер
да видел форумы уже, типа так и должно быть) потому что нет другого способа индентифицировать подписку без доп параметров, хотя не разбирался в интерелах элма есть ли у него доступ к этому, надо знать вид события возвращаемого, что разделять "разные" подписки с одними и теми же параметрами эффекта, возможно это вообще в философию не закладывалось
источник

AP

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

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Можно было сделать раундтрип с Cmd TimerId -> Model -> Sub.enable model.id
источник