foldText :: V.Vector Int -> T.Text -> Acc -> Token -> Acc
foldText ls src ((l, c), src') ((Pos l1 c1, Pos l2 c2), token) =
  let
    ws      = substrText src ls (l, c) 1 (l1, c1) 0
    lexeme  = substrText src ls (l1, c1) 0 (l2, c2) 1
  in
    -- ((l2, c2), (T.append (T.append (T.append (T.append (T.append (T.append src' ws) ":") token) ":") lexeme) ":"))
    ((l2, c2), src' <> ws <> ":" <> token <> ":" <> lexeme <> ":")
foldText :: V.Vector Int -> T.Text -> Acc -> Token -> Acc
foldText ls src ((l, c), src') ((Pos l1 c1, Pos l2 c2), token) =
  let
    ws      = substrText src ls (l, c) 1 (l1, c1) 0
    lexeme  = substrText src ls (l1, c1) 0 (l2, c2) 1
  in
    -- ((l2, c2), (T.append (T.append (T.append (T.append (T.append (T.append src' ws) ":") token) ":") lexeme) ":"))
    ((l2, c2), src' <> ws <> ":" <> token <> ":" <> lexeme <> ":")
foldText ls src ((l, c), src') ((Pos l1 c1, Pos l2 c2), token) =
  let
    ws      = substrText src ls (l, c) 1 (l1, c1) 0
    lexeme  = substrText src ls (l1, c1) 0 (l2, c2) 1
  in
    -- ((l2, c2), (T.append (T.append (T.append (T.append (T.append (T.append src' ws) ":") token) ":") lexeme) ":"))
    ((l2, c2), src' <> ws <> ":" <> token <> ":" <> lexeme <> ":")