AP
Size: a a a
AP
AP
optional
есть. А в elm/parser
нет!K
K
K
AP
AP
С
AP
K
K
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
AP
K
AP
AP
K
recursive : (Parser a -> Parser a) -> Parser a
и delay : (() -> Parser a) -> Parser a
сделать? На C# у меня есть образец.AP