Idris2Doc : Deriving.SpecialiseData

Deriving.SpecialiseData

(source)

Reexports

importpublic Language.Mk

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
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
CurrentNS : Elaborationm=>NamespaceProviderm
Totality: total
Visibility: export
inNS : Monadm=>Namespace->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
interfaceTaskLambda : Type->Type
  Valid task lambda interface

Auto-implemented by any Type or any function that returns Type.

Parameters: t
Implementations:
TaskLambdaType
TaskLambdab=>TaskLambda (a->b)
TaskLambdab=>TaskLambda (a=>b)
TaskLambdab=>TaskLambdab
TaskLambdab=>TaskLambda ((0_ : a) ->b)
TaskLambdab=>TaskLambda ({auto0_ : a} ->b)
TaskLambdab=>TaskLambdab
specialiseDataRaw : Monadm=>NamespaceProviderm=>CanUnifym=>MonadLogm=>MonadErrorSpecialisationErrorm=>NamesInfoInTypes=>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
specialiseData : TaskLambdataskT=>Monadm=>Elaborationm=>NamespaceProviderm=>CanUnifym=>MonadErrorSpecialisationErrorm=>NamesInfoInTypes=>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
specialiseData'' : Elaborationm=>NamespaceProviderm=>CanUnifym=>TaskLambdataskT=>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:
```
specialiseData'' `{VF} $ \n => Fin n
```

Totality: total
Visibility: export
specialiseData' : Elaborationm=>NamespaceProviderm=>CanUnifym=>TaskLambdataskT=>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 specialiseData' `{VF} $ \n => Fin n
```

Totality: total
Visibility: export