lean4-htt/tests/compiler/str.lean
Leonardo de Moura cf3bbd7e25 feat(runtime): add utf8_prev and utf8_set
Next goal: implement string.iterator in Lean
2019-03-11 18:05:40 -07:00

21 lines
711 B
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

def show_chars : nat → string → string.utf8_pos → io unit
| 0 _ _ := pure ()
| (n+1) s idx :=
unless (s.utf8_at_end idx) $
io.println' (">> " ++ to_string (s.utf8_get idx)) *>
show_chars n s (s.utf8_next idx)
def main : io uint32 :=
let s₁ := "hello α_world_β" in
let b := string.utf8_begin in
let e := s₁.utf8_byte_size in
io.println' (s₁.extract b e) *>
io.println' (s₁.extract (b+2) e) *>
io.println' (s₁.extract (b+2) (e-1)) *>
io.println' (s₁.extract (b+2) (e-2)) *>
io.println' (s₁.extract (b+7) e) *>
io.println' (s₁.extract (b+8) e) *>
io.println' (to_string e) *>
io.println' (repr " aaa ".trim) *>
show_chars s₁.utf8_byte_size.to_nat s₁ 0 *>
pure 0