Something
public text v1 · immutable if i1 < len && s.[i1] = '-' then begin
let (i2, c2) = parse_char (i1 + 1) in
cs#add_range c1 c2;
parse_inner_charclass i2 cs
end else begin
cs#add c1;
parse_inner_charclass i1 cs
end