# Generics

The `:std/generic` library provides support for generic methods.

::: tip usage
(import :std/generic)
:::

## Overview

Please write me!

## Macros

### defgeneric
::: tip usage
```
(defgeneric ...)
```
:::

Please document me!

### defmethod
::: tip usage
```
(defmethod ...)
```
:::

Please document me!

### defbuiltin-type
::: tip usage
```
(defbuiltin-type ...)
```
:::

Please document me!

### defprimitive-type
::: tip usage
```
(defprimitive-type ...)
```
:::

Please document me!


## Predefined Types

### &lt;bignum&gt;
```
(defprimitive-type <bignum> ...)
```

Please document me!

### &lt;boolean&gt;
```
(defprimitive-type <boolean> ...)
```

Please document me!

### &lt;box&gt;
```
(defprimitive-type <box> ...)
```

Please document me!

### &lt;byte-port&gt;
```
(defbuiltin-type <byte-port> ...)
```

Please document me!

### &lt;char&gt;
```
(defprimitive-type <char> ...)
```

Please document me!

### &lt;character-port&gt;
```
(defbuiltin-type <character-port> ...)
```

Please document me!

### &lt;complex&gt;
```
(defprimitive-type <complex> ...)
```

Please document me!

### &lt;condvar&gt;
```
(defbuiltin-type <condvar> ...)
```

Please document me!

### &lt;continuation&gt;
```
(defprimitive-type <continuation> ...)
```

Please document me!

### &lt;device-port&gt;
```
(defbuiltin-type <device-port> ...)
```

Please document me!

### &lt;directory-port&gt;
```
(defbuiltin-type <directory-port> ...)
```

Please document me!

### &lt;eof&gt;
```
(defprimitive-type <eof> ...)
```

Please document me!

### &lt;event-queue-port&gt;
```
(defbuiltin-type <event-queue-port> ...)
```

Please document me!

### &lt;exception&gt;
```
(defbuiltin-type <exception> ...)
```

Please document me!

### &lt;f32vector&gt;
```
(defprimitive-type <f32vector> ...)
```

Please document me!

### &lt;f64vector&gt;
```
(defprimitive-type <f64vector> ...)
```

Please document me!

### &lt;fixnum&gt;
```
(defprimitive-type <fixnum> ...)
```

Please document me!

### &lt;flonum&gt;
```
(defprimitive-type <flonum> ...)
```

Please document me!

### &lt;foreign&gt;
```
(defprimitive-type <foreign> ...)
```

Please document me!

### &lt;hash-table&gt;
```
(defprimitive-type <hash-table> ...)
```

Please document me!

### &lt;integer&gt;
```
(defprimitive-type <integer> ...)
```

Please document me!

### &lt;keyword&gt;
```
(defprimitive-type <keyword> ...)
```

Please document me!

### &lt;mutex&gt;
```
(defbuiltin-type <mutex> ...)
```

Please document me!

### &lt;null&gt;
```
(defprimitive-type <null> ...)
```

Please document me!

### &lt;number&gt;
```
(defprimitive-type <number> ...)
```

Please document me!

### &lt;object-port&gt;
```
(defbuiltin-type <object-port> ...)
```

Please document me!

### &lt;object&gt;
```
(defprimitive-type <object> ...)
```

Please document me!

### &lt;pair&gt;
```
(defprimitive-type <pair> ...)
```

Please document me!

### &lt;port&gt;
```
(defbuiltin-type <port> ...)
```

Please document me!

### &lt;procedure&gt;
```
(defprimitive-type <procedure> ...)
```

Please document me!

### &lt;promise&gt;
```
(defprimitive-type <promise> ...)
```

Please document me!

### &lt;rational&gt;
```
(defprimitive-type <rational> ...)
```

Please document me!

### &lt;raw-device-port&gt;
```
(defbuiltin-type <raw-device-port> ...)
```

Please document me!

### &lt;readtable&gt;
```
(defbuiltin-type <readtable> ...)
```

Please document me!

### &lt;real&gt;
```
(defprimitive-type <real> ...)
```

Please document me!

### &lt;s16vector&gt;
```
(defprimitive-type <s16vector> ...)
```

Please document me!

### &lt;s32vector&gt;
```
(defprimitive-type <s32vector> ...)
```

Please document me!

### &lt;s64vector&gt;
```
(defprimitive-type <s64vector> ...)
```

Please document me!

### &lt;s8vector&gt;
```
(defprimitive-type <s8vector> ...)
```

Please document me!

### &lt;string-port&gt;
```
(defbuiltin-type <string-port> ...)
```

Please document me!

### &lt;string&gt;
```
(defprimitive-type <string> ...)
```

Please document me!

### &lt;symbol&gt;
```
(defprimitive-type <symbol> ...)
```

Please document me!

### &lt;t&gt;
```
(defprimitive-type <t> ...)
```

Please document me!

### &lt;tcp-server-port&gt;
```
(defbuiltin-type <tcp-server-port> ...)
```

Please document me!

### &lt;thread-group&gt;
```
(defbuiltin-type <thread-group> ...)
```

Please document me!

### &lt;thread&gt;
```
(defbuiltin-type <thread> ...)
```

Please document me!

### &lt;time&gt;
```
(defbuiltin-type <time> ...)
```

Please document me!

### &lt;type&gt;
```
(defbuiltin-type <type> ...)
```

Please document me!

### &lt;u16vector&gt;
```
(defprimitive-type <u16vector> ...)
```

Please document me!

### &lt;u32vector&gt;
```
(defprimitive-type <u32vector> ...)
```

Please document me!

### &lt;u64vector&gt;
```
(defprimitive-type <u64vector> ...)
```

Please document me!

### &lt;u8vector-port&gt;
```
(defbuiltin-type <u8vector-port> ...)
```

Please document me!

### &lt;u8vector&gt;

```
(defprimitive-type <u8vector> ...)
```

Please document me!

### &lt;values&gt;
```
(defprimitive-type <values> ...)
```

Please document me!

### &lt;vector-port&gt;
```
(defbuiltin-type <vector-port> ...)
```

Please document me!

### &lt;vector&gt;
```
(defprimitive-type <vector> ...)
```

Please document me!

### &lt;void&gt;
```
(defbuiltin-type <void> ...)
```

Please document me!


## Generic Object Types

### type-of
::: tip usage
```
(type-of ...)
```
:::

Please document me!

### linear-type-of
::: tip usage
```
(linear-type-of ...)
```
:::

Please document me!

### type-linearize-class
::: tip usage
```
(type-linearize-class ...)
```
:::

Please document me!


## Generic Method Objects

### make-generic
::: tip usage
```
(make-generic ...)
```
:::

Please document me!

### generic?
::: tip usage
```
(generic? ...)
```
:::

Please document me!

### generic-id
::: tip usage
```
(generic-id ...)
```
:::

Please document me!

### generic-bind!
::: tip usage
```
(generic-bind! ...)
```
:::

Please document me!

### generic-dispatch
::: tip usage
```
(generic-dispatch ...)
```
:::

Please document me!

### generic-dispatch-next
::: tip usage
```
(generic-dispatch-next ...)
```
:::

Please document me!


## Syntax Bindings

### generic-info
```
(defclass (generic-info macro-object) (table procedure))
```

Please document me!

### generic-type-info
```
(defclass generic-type-info ())
```

Please document me!

### primitive-type-info
```
(defclass (primitive-type-info generic-type-info) (type))
```

Please document me!

### builtin-type-info
```
(defclass (builtin-type-info generic-type-info) (runtime-identifier))
```

Please document me!


## Example

Please write me!
