Module typetraits

This module defines compile-time reflection procs for working with types


proc name(t: typedesc): string {.magic: "TypeTrait".}

Returns the name of the given type.


import typetraits

proc `$`*(T: typedesc): string = name(T)

template test(x): stmt =
  echo "type: ", type(x), ", value: ", x

test 42
# --> type: int, value: 42
test "Foo"
# --> type: string, value: Foo
# --> type: seq[char], value: @[A, B]
proc arity(t: typedesc): int {.magic: "TypeTrait".}
Returns the arity of the given type
proc genericHead(t: typedesc): typedesc {.magic: "TypeTrait".}
Accepts an instantiated generic type and returns its uninstantiated form.
For example:
seq[int].genericHead will be just seq seq[int].genericHead[float] will be seq[float]

A compile-time error will be produced if the supplied type is not generic

proc stripGenericParams(t: typedesc): typedesc {.magic: "TypeTrait".}
This trait is similar to genericHead, but instead of producing error for non-generic types, it will just return them unmodified

© 2006–2017 Andreas Rumpf
Licensed under the MIT License.