7 data ParseResult a = OkP a | FailP String
8 type P a = String -> Int -> ParseResult a
10 instance Show a => Show (ParseResult a)
11 where show (OkP r) = show r
14 thenP :: P a -> (a -> P b) -> P b
15 m `thenP` k = \ s l ->
23 failP :: String -> P a
24 failP s s' _ = FailP (s ++ ":" ++ s')
66 let decoded = zDecodeString mn
68 -- We re-encode the individual parts so that:
69 -- main:Foo_Bar.Quux.baz
71 -- main:FoozuBarziQuux.baz
73 -- main:Foo_BarziQuux.baz
74 parts = map zEncodeString $ filter (notElem '.') $ groupBy
75 (\ c1 c2 -> c1 /= '.' && c2 /= '.')
77 (take (length parts - 1) parts, last parts)