- data Recognise : Bool -> Type
-   A language of token recognisers.
 @ consumes If `True`, this recogniser is guaranteed to consume at
 least one character of input when it succeeds.
 
 Totality: total
 Visibility: export
 Constructors:
 -   - Empty : Recognise False
- Fail : Recognise c
- Lookahead : Bool -> Recognise c -> Recognise False
- Pred : (Char -> Bool) -> Recognise True
- SeqEat : Recognise True -> Inf (Recognise e) -> Recognise True
- SeqEmpty : Recognise e1 -> Recognise e2 -> Recognise (e1 || Delay e2)
- SeqSame : Recognise e -> Recognise e -> Recognise e
- Alt : Recognise e1 -> Recognise e2 -> Recognise (e1 && Delay e2)
 
- Lexer : Type
-   A token recogniser. Guaranteed to consume at least one character. 
 Totality: total
 Visibility: public export
- (<+>) : Recognise c1 -> inf c1 (Recognise c2) -> Recognise (c1 || Delay c2)
-   Sequence two recognisers. If either consumes a character, the sequence
 is guaranteed to consume a character.
 
 Totality: total
 Visibility: export
 Fixity Declaration: infixl operator, level 8
- (<|>) : Recognise c1 -> Recognise c2 -> Recognise (c1 && Delay c2)
-   Alternative recognisers. If both consume, the combination is guaranteed
 to consume a character.
 
 Totality: total
 Visibility: export
 Fixity Declaration: infixr operator, level 2
- fail : Recognise c
-   A recogniser that always fails. 
 Totality: total
 Visibility: export
- empty : Recognise False
-   Recognise no input (doesn't consume any input) 
 Totality: total
 Visibility: export
- pred : (Char -> Bool) -> Lexer
-   Recognise a character that matches a predicate 
 Totality: total
 Visibility: export
- expect : Recognise c -> Recognise False
-   Positive lookahead. Never consumes input. 
 Totality: total
 Visibility: export
- reject : Recognise c -> Recognise False
-   Negative lookahead. Never consumes input. 
 Totality: total
 Visibility: export
- concatMap : (a -> Recognise c) -> (xs : List a) -> Recognise (isCons xs && Delay c)
-   Sequence the recognisers resulting from applying a function to each element
 of a list. The resulting recogniser will consume input if the produced
 recognisers consume and the list is non-empty.
 
 Totality: total
 Visibility: export
- scan : Recognise c -> List Char -> List Char -> Maybe (List Char, List Char)
-   Totality: total
 Visibility: export
- TokenMap : Type -> Type
-   A mapping from lexers to the tokens they produce.
 This is a list of pairs `(Lexer, String -> tokenType)`
 For each Lexer in the list, if a substring in the input matches, run
 the associated function to produce a token of type `tokenType`
 
 Totality: total
 Visibility: public export
- lex : TokenMap a -> String -> (List (WithBounds a), (Int, (Int, String)))
-   Given a mapping from lexers to token generating functions (the
 TokenMap a) and an input string, return a list of recognised tokens,
 and the line, column, and remainder of the input at the first point in the
 string where there are no recognised tokens.
 
 Totality: total
 Visibility: export
- lexTo : (a -> Bool) -> TokenMap a -> String -> (List (WithBounds a), (Int, (Int, String)))
-   Totality: total
 Visibility: export