Size: a a a

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

2021 May 28

AP

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

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
в пайплайнах хоть optional есть. А в elm/parser нет!
источник

K

Kir in Elm Lang сообщество разработчиков
Што.
источник

K

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

K

Kir in Elm Lang сообщество разработчиков
И мультилайна в репле нет. И проект оно в репл не грузит.
источник

AP

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

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Ответ звучит "Эван сделал себе проще, а ты теперь пиши больше"
источник

С

Сергей in Elm Lang сообщество разработчиков
это скучно, вы хотите пурскрипт
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Гарды — обязательная часть Pattern Matching практически везде, где PM реализован в принципе.
источник

AP

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

K

Kir in Elm Lang сообщество разработчиков
Да. Без HKT, классов типов, гардов и нормального REPL - и ещё кучи всего! - язык получился очень грустный.
источник

K

Kir in Elm Lang сообщество разработчиков
@astynax
Ничо, если я в many выкину эксепшн, если его парсер-параметр сожрал 0 текста?

many : Parser e s d c a -> Parser e s d c (List a)
many p ctx =
 let
   loop acc delta s1 =
     case p ctx s1 of
       (Ok a, d, s2) ->
         if d == ctx.empty
         then
           Debug.todo
             <| "the argument to `many` succeeded, but consumed nothing, "
             ++ "good luck searching where it happened!"
         else
           loop (a :: acc) (ctx.append delta d) s2
       (Err e, d, s2) ->
         if d == ctx.empty
         then
           (Ok (List.reverse acc), delta, s1)
         else
           (Err e, ctx.append delta d, s2)
 in
   loop [] ctx.empty
источник

AP

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

AP

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

K

Kir in Elm Lang сообщество разработчиков
Так, монадный интерфейс нужен или аппливативом можно обойтись?

У меня аналог update monad
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
andThen удобен, чтобы рекурсию разрывать
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
А основной синтаксис это pure + flip ap
источник

K

Kir in Elm Lang сообщество разработчиков
А, точно, рекурсия. Может лучше recursive : (Parser a -> Parser a) -> Parser a и delay : (() -> Parser a) -> Parser a сделать? На C# у меня есть образец.

Так, стоп, а в эльме вообще Lazy есть?
источник

AP

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

AP

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