Idris2Doc : Deriving.SpecialiseData

Deriving.SpecialiseData

(source)

Reexports

importpublic Data.DPair
importpublic Data.List.Map
importpublic Decidable.Decidable
importpublic Decidable.Equality
importpublic Language.Mk
importpublic Language.Reflection.Compat.TypeInfo
importpublic Language.Reflection.Unify.Interface
importpublic Language.Reflection.VarSubst

Definitions

dataSpecialisationError : Type
  Specialisation error

Totality: total
Visibility: export
Constructors:
TaskTypeExtractionError : SpecialisationError
  Failed to extract polymorphic type name from task
UnusedVarError : SpecialisationError
  Unused variable
PartialSpecError : SpecialisationError
  Partial specification
InternalError : String->SpecialisationError
  Internal error
UnnamedArgInLambdaError : SpecialisationError
  Lambda has unnamed arguments
UnnamedArgInPolyTyError : Name->SpecialisationError
  Polymorphic type has unnamed arguments
MissingTypeInfoError : Name->SpecialisationError
  Failed to get TypeInfo

Can occur either due to trying to specialise a non-type invocation
or due to not having the necessary TypeInfo in the NamesInfoInTypes instance

Hint: 
ShowSpecialisationError
showSE : ShowSpecialisationError
Totality: total
Visibility: export
recordSpecialisationParams : Type
Totality: total
Visibility: public export
Constructor: 
MkSpecParams : Bool->SpecialisationParams

Projection: 
.eraseConNames : SpecialisationParams->Bool
.eraseConNames : SpecialisationParams->Bool
Totality: total
Visibility: public export
eraseConNames : SpecialisationParams->Bool
Totality: total
Visibility: public export
SpecialisationDefaults : SpecialisationParams
Totality: total
Visibility: public export
interfaceNamespaceProvider : (Type->Type) ->Type
Parameters: m
Constructor: 
MkNSProvider

Methods:
provideNS : mNamespace

Implementation: 
Monadm=>MonadTranst=>NamespaceProviderm=>NamespaceProvider (tm)
provideNS : NamespaceProviderm=>mNamespace
Totality: total
Visibility: public export
inNS : Monadm=>Namespace->NamespaceProviderm
Totality: total
Visibility: export
NoNS : Monadm=>NamespaceProviderm
Totality: total
Visibility: export
.apply : (ti : TypeInfo) -> {auto0_ : AllTyArgsNamedti} -> (Name->TTImp) ->SortedMapNameTTImp->TTImp
  Returns a full application of the given type constructor
with argument values sourced from `argValues`
or generated with `fallback` if not present

Totality: total
Visibility: export
.apply : (con : Con) -> {auto0_ : ConArgsNamedcon} -> (Name->TTImp) ->SortedMapNameTTImp->TTImp
  Returns a full application of the given constructor
with argument values sourced from `argValues`
or generated with `fallback` if not present

Totality: total
Visibility: export
0snoc : Allpprev->pnew->Allp (snocprevnew)
  Proof that Vect.All works over Vect.snoc

Totality: total
Visibility: export
fromListAll : (l : Listt) -> {auto0_ : Allpl} ->Subset (Vect (lengthl) t) (Allp)
  List + List.All to Vect + Vect.All

Totality: total
Visibility: export
0snoc : Allpprev->pnew->Allp (snocprevnew)
  Proof that List.All works over List.snoc

Totality: total
Visibility: export
toListAll : (sl : SnocListArg) -> (0_ : Allpsl) ->Subset (ListArg) (Allp)
  SnocList + SnocList.All to List + List.All

Totality: total
Visibility: export
specialiseDataRaw : Monadm=>NamespaceProviderm=>CanUnifym=>MonadLogm=>MonadErrorSpecialisationErrorm=>NamesInfoInTypes=>SpecialisationParams=>Name->TTImp->TTImp->m (TypeInfo, ListDecl)
  Perform a specialisation for a given type name, kind and content expressions

In order to generate a specialised type declaration equivalent to the following type alias:
```
VF : Nat -> Type
VF n = Fin n
```
...you may use this function as follows:
```
specialiseDataRaw `{VF} `(Nat -> Type) `(\n => Fin n)
```

Totality: total
Visibility: export
normaliseTask : Elaborationm=>ListArg->TTImp->m (TTImp, TTImp)
Totality: total
Visibility: export
specialiseDataArgs : Elaborationm=>NamespaceProviderm=>CanUnifym=>MonadLogm=>MonadErrorSpecialisationErrorm=>NamesInfoInTypes=>SpecialisationParams=>Name->ListArg->TTImp->m (TypeInfo, ListDecl)
Totality: total
Visibility: export
specialiseDataLam : Monadm=>Elaborationm=>NamespaceProviderm=>CanUnifym=>MonadErrorSpecialisationErrorm=>NamesInfoInTypes=>SpecialisationParams=>Name-> (0_ : taskT) ->m (TypeInfo, ListDecl)
  Perform a specialisation for a given type name and content lambda

In order to generate a specialised type declaration equivalent to the following type alias:
```
VF : Nat -> Type
VF n = Fin n
```
...you may use this function as follows:
```
specialiseData `{VF} $ \n => Fin n
```

Totality: total
Visibility: export
specialiseDataLam'' : Elaborationm=>NamespaceProviderm=>CanUnifym=>SpecialisationParams=>Name-> (0_ : taskT) ->m (ListDecl)
  Perform a specialisation for a given type name and content lambda,
returning a list of declarations and failing on error

In order to generate a specialised type declaration equivalent to the following type alias:
```
VF : Nat -> Type
VF n = Fin n
```
...you may use this function as follows:
```
specialiseDataLam'' `{VF} $ \n => Fin n
```

Totality: total
Visibility: export
specialiseDataLam' : Elaborationm=>NamespaceProviderm=>CanUnifym=>SpecialisationParams=>Name-> (0_ : taskT) ->m ()
  Perform a specialisation for a given type name and content lambda,
declaring the results and failing on error

In order to declare a specialised type declaration equivalent to the following type alias:
```
VF : Nat -> Type
VF n = Fin n
```
...you may use this function as follows:
```
%runElab specialiseDataLam' `{VF} $ \n => Fin n
```

Totality: total
Visibility: export