Main> Prelude.plus : Nat -> Nat -> Nat
  Add two natural numbers.
  @ x the number to case-split on
  @ y the other number
  Totality: total
  Visibility: public export
Main> data Prelude.Nat : Type
  Natural numbers: unbounded, unsigned integers which can be pattern matched.
  Totality: total
  Visibility: public export
  Constructors:
    Z : Nat
      Zero.
    S : Nat -> Nat
      Successor.
  Hints:
    Cast Nat String
    Cast Nat Integer
    Cast Nat Int
    Cast Nat Char
    Cast Nat Double
    Cast Nat Bits8
    Cast Nat Bits16
    Cast Nat Bits32
    Cast Nat Bits64
    Cast Nat Int8
    Cast Nat Int16
    Cast Nat Int32
    Cast Nat Int64
    Cast String Nat
    Cast Double Nat
    Cast Char Nat
    Cast Int Nat
    Cast Integer Nat
    Cast Bits8 Nat
    Cast Bits16 Nat
    Cast Bits32 Nat
    Cast Bits64 Nat
    Cast Int8 Nat
    Cast Int16 Nat
    Cast Int32 Nat
    Cast Int64 Nat
    Eq Nat
    Num Nat
    Ord Nat
    Range Nat
    Show Nat
Main> data Prelude.List : Type -> Type
  Generic lists.
  Totality: total
  Visibility: public export
  Constructors:
    Nil : List a
      Empty list
    (::) : a -> List a -> List a
      A non-empty list, consisting of a head element and the rest of the list.
  Hints:
    Alternative List
    Applicative List
    Eq a => Eq (List a)
    Foldable List
    Functor List
    Monad List
    Monoid (List a)
    Ord a => Ord (List a)
    Semigroup (List a)
    Show a => Show (List a)
    Traversable List
Main> interface Prelude.Show : Type -> Type
  Things that have a canonical `String` representation.
  A minimal implementation includes either `show` or `showPrec`.
  Parameters: ty
  Constructor: MkShow
  Methods:
    show : ty -> String
      Convert a value to its `String` representation.
      @ x the value to convert
    showPrec : Prec -> ty -> String
      Convert a value to its `String` representation in a certain precedence
      context.
      
      A value should produce parentheses around itself if and only if the given
      precedence context is greater than or equal to the precedence of the
      outermost operation represented in the produced `String`.  *This is
      different from Haskell*, which requires it to be strictly greater.  `Open`
      should thus always produce *no* outermost parens, `App` should always
      produce outermost parens except on atomic values and those that provide
      their own bracketing, like `Pair` and `List`.
      @ d the precedence context.
      @ x the value to convert
  Implementations:
    Show Int
    Show Integer
    Show Bits8
    Show Bits16
    Show Bits32
    Show Bits64
    Show Int8
    Show Int16
    Show Int32
    Show Int64
    Show Double
    Show Char
    Show String
    Show Nat
    Show Bool
    Show Void
    Show ()
    (Show a, Show b) => Show (a, b)
    (Show a, Show (p y)) => Show (DPair a p)
    Show a => Show (List a)
    Show a => Show (Maybe a)
    (Show a, Show b) => Show (Either a b)
    Show Ordering
Main> Prelude.show : Show ty => ty -> String
  Convert a value to its `String` representation.
  @ x the value to convert
  Totality: total
  Visibility: public export
Main> interface Prelude.Monad : (Type -> Type) -> Type
  Monad
  @m The underlying functor
  A minimal definition includes either `(>>=)` or `join`.
  Parameters: m
  Constraints: Applicative m
  Constructor: MkMonad
  Methods:
    (>>=) : m a -> (a -> m b) -> m b
      Also called `bind`.
      Fixity Declaration: infixl operator, level 1
    join : m (m a) -> m a
      Also called `flatten` or mu.
  Implementations:
    Monad IO
    Monoid a => Monad (Pair a)
    Monad Maybe
    Monad (Either e)
    Monad List
Main> 1 : Integer
  Primitive unsigned int value (backend-dependent precision)
Main> String : Type
  Primitive type of strings
Hints:
  Cast Int String
  Cast Integer String
  Cast Char String
  Cast Double String
  Cast Nat String
  Cast Int8 String
  Cast Int16 String
  Cast Int32 String
  Cast Int64 String
  Cast Bits8 String
  Cast Bits16 String
  Cast Bits32 String
  Cast Bits64 String
  Cast String Integer
  Cast String Int
  Cast String Double
  Cast String Bits8
  Cast String Bits16
  Cast String Bits32
  Cast String Bits64
  Cast String Int8
  Cast String Int16
  Cast String Int32
  Cast String Int64
  Cast String Nat
  Eq String
  FromString String
  Interpolation String
  Monoid String
  Ord String
  Semigroup String
  Show String
Main> Integer : Type
  Primitive type of unbounded signed integers
Hints:
  Abs Integer
  Cast Integer String
  Cast Int Integer
  Cast Char Integer
  Cast Double Integer
  Cast String Integer
  Cast Nat Integer
  Cast Bits8 Integer
  Cast Bits16 Integer
  Cast Bits32 Integer
  Cast Bits64 Integer
  Cast Int8 Integer
  Cast Int16 Integer
  Cast Int32 Integer
  Cast Int64 Integer
  Cast Integer Int
  Cast Integer Char
  Cast Integer Double
  Cast Integer Bits8
  Cast Integer Bits16
  Cast Integer Bits32
  Cast Integer Bits64
  Cast Integer Int8
  Cast Integer Int16
  Cast Integer Int32
  Cast Integer Int64
  Cast Integer Nat
  Eq Integer
  Integral Integer
  Neg Integer
  Num Integer
  Ord Integer
  Show Integer
Main> Bits16 : Type
  Primitive type of 16 bits unsigned integers
Hints:
  Abs Bits16
  Cast Bits16 String
  Cast Bits16 Integer
  Cast Bits16 Int
  Cast Bits16 Char
  Cast Bits16 Double
  Cast Bits16 Bits8
  Cast Int Bits16
  Cast Integer Bits16
  Cast Bits8 Bits16
  Cast Bits32 Bits16
  Cast Bits64 Bits16
  Cast String Bits16
  Cast Double Bits16
  Cast Char Bits16
  Cast Nat Bits16
  Cast Int8 Bits16
  Cast Int16 Bits16
  Cast Int32 Bits16
  Cast Int64 Bits16
  Cast Bits16 Bits32
  Cast Bits16 Bits64
  Cast Bits16 Int8
  Cast Bits16 Int16
  Cast Bits16 Int32
  Cast Bits16 Int64
  Cast Bits16 Nat
  Eq Bits16
  Integral Bits16
  Neg Bits16
  Num Bits16
  Ord Bits16
  Show Bits16
Main> Bye for now!
