0 | module Data.String.Lens
3 | import public Control.Lens
4 | import Data.List.Lens
15 | unpacked : Iso' String (List Char)
16 | unpacked = iso unpack pack
24 | packed : Iso' (List Char) String
25 | packed = iso pack unpack
29 | reversed : Iso' String String
30 | reversed = involuted reverse
34 | Ixed Nat Char String where
35 | ix k = unpacked . ix k
38 | Cons String String Char Char where
39 | consIso = iso strUncons (maybe "" $
uncurry strCons)
40 | cons_ = prism' (uncurry strCons) strUncons
42 | snoc : String -> Char -> String
43 | snoc s c = s ++ singleton c
45 | unsnoc : String -> Maybe (String, Char)
49 | (S n) => Just (substr Z n s,
50 | assert_total $
strIndex s (cast n))
53 | Snoc String String Char Char where
54 | snocIso = iso unsnoc (maybe "" $
uncurry snoc)
55 | snoc_ = prism' (uncurry snoc) unsnoc
58 | Each String String Char Char where
59 | each = unpacked . traversed
62 | Num i => IEach i String String Char Char where
63 | ieach = unpacked . itraversed