import parser parseABC : Parser () = MkParser \h. parse h $ p_char 'A' parse h $ p_char 'B' parse h $ p_char 'C' :p run_parser "AAA" parseABC > Nothing :p run_parser "ABCABC" parseABC > Nothing :p run_parser "AB" parseABC > Nothing :p run_parser "ABC" parseABC > (Just ()) def parseT() ->> Parser Bool = MkParser \h. parse h $ p_char 'T' True def parseF() ->> Parser Bool = MkParser \h. parse h $ p_char 'F' False def parseTF() ->> Parser Bool = parseT <|> parseF def parserTFTriple() ->> Parser (Fin 3=>Bool) = MkParser \h. for i. parse h parseTF :p run_parser "TTF" parserTFTriple > (Just [True, True, False]) :p run_parser "TTFX" parserTFTriple > Nothing :p run_parser "TTFFTT" $ parse_many parseTF > (Just (AsList 6 [True, True, False, False, True, True])) :p run_parser "1021389" $ parse_many parse_digit > (Just (AsList 7 [1, 0, 2, 1, 3, 8, 9])) :p run_parser "1389" $ parse_int > (Just 1389) :p run_parser "01389" $ parse_int > (Just 1389) :p run_parser "-1389" $ parse_int > (Just -1389) split ' ' " This is a sentence. " > (AsList 4 ["This", "is", "a", "sentence."])