Idris2Doc : Deriving.Show

Deriving.Show

Deriving show instances using reflection
You can for instance define:
```
data Tree a = Leaf a | Node (Tree a) (Tree a)
treeShow : Show a => Show (Tree a)
treeShow = %runElab derive
```

Reexports

importpublic Control.Monad.Either
importpublic Control.Monad.State
importpublic Data.Maybe
importpublic Decidable.Equality
importpublic Language.Reflection
importpublic Deriving.Common

Definitions

fromShowPrec : (Prec->ty->String) ->Showty
Totality: total
Visibility: public export
dataError : Type
  Possible errors for the functor-deriving machinery.

Totality: total
Visibility: public export
Constructors:
NotAShowable : Name->Error
UnsupportedType : TTImp->Error
NotAFiniteStructure : Error
NotAnUnconstrainedValue : Count->Error
InvalidGoal : Error
ConfusingReturnType : Error
WhenCheckingConstructor : Name->Error->Error
WhenCheckingArg : TTImp->Error->Error

Hint: 
ShowError
dataIsShowable : Name->TTImp->Type
Totality: total
Visibility: public export
Constructors:
ISDelayed : IsShowabletty->IsShowablet (IDelayedfcLLazyty)
  The subterm is delayed (Lazy only, we can't traverse infinite structures)
ISRec : (0_ : IsAppView ({_:4388}, t) {_:4389}ty) ->IsShowabletty
  There is a recursive subtree of type (t a1 ... an)
ISShowN : (0_ : IsAppView ({_:4416}, tcon) argsty) ->HasTypetcontconty->IsProvable (ShowNtcontytcon) ->IsShowableArgsttconty (args<>> []) ->IsShowabletty
  There are nested subtrees somewhere inside a 3rd party type constructor
which satisfies the Show interface
ISParam : IsShowabletty
  Or we could be referring to one of the parameters
ISPrim : (ty : PrimType) ->IsShowablet (IPrimValfc (PrTty))
  A primitive type is trivially Showable
typeView : Elaborationm=>MonadErrorErrorm=>MonadStateParametersm=> (t : Name) ->List (Name, Nat) -> (ty : TTImp) ->m (IsShowabletty)
  Hoping to observe that ty can be shown

Totality: total
Visibility: export
derive : {defaultPrivate_ : Visibility} -> {defaultTotal_ : TotalReq} -> {default [] _ : ListName} ->Elab (Showf)
  Derive an implementation of Show for a type constructor.
This can be used like so:
```
data Tree a = Leaf a | Node (Tree a) (Tree a)
treeShow : Show a => Show (Tree a)
treeShow = %runElab derive
```

Totality: total
Visibility: export