## Symbols and compilation

### C Reference

`ecl_make_keyword`

Find a lisp keyword

#### Function

    	  cl_object ecl_make_keyword
    	  char * name

##### Description

Many Lisp functions take keyword arguments. When invoking a function with keyword arguments we need keywords, which are a kind of symbols that live in the `KEYWORD` package. This function does the task of finding or creating those keywords from C strings.

- It is usually safe to store the resulting pointer, because keywords are always referenced by their package and will not be garbage collected (unless of course, you decide to delete it).

- Remember that the case of the string is significant. `ecl_make_keyword("TO")` with return `:TO`, while `ecl_make_keyword("to")` returns a completely different keywod, `:|to|`. In short, you usually want to use uppercase.

##### Example

The following example converts a section of a string to uppercase characters:

    cl_object start = ecl_make_keyword("START");
    cl_object end = ecl_make_keyword("END");
    ...
    sup = cl_string_upcase(4, s, start, ecl_make_fixnum(2),
                           end, ecl_make_fixnum(6));
    ...

`ecl_make_symbol`

Find a lisp symbol

#### Function

    	  cl_object ecl_make_symbol
    	  const char * name
    	  const char * package_name

##### Description

This function finds or create a symbol in the given package. First of all, it tries to find the package named by `package_name`. If it does not exist, an error is signaled. Then, a symbol with the suppled `name` is searched in the given package. If the symbol exists, it is returned. If it does not exist, using `INTERN`.

ANSI Dictionary

&ANSI-C-Dict;

- Lisp symbol
- C function
- boundp
- `cl_object cl_boundp(cl_object symbolp)`
- copy-symbol
- `cl_object cl_copy_symbol(cl_narg narg, cl_object symbol, ...)`
- get
- `cl_object cl_get(cl_object symbol, cl_object indicator)`
- gensym
- `cl_object cl_gensym(cl_narg narg, ...)`
- gentemp
- `cl_object cl_gentemp(cl_narg narg, ...)`
- keywordp
- `cl_object cl_keywordp(cl_object object)`
- make-symbol
- `cl_object cl_make_symbol(cl_object name)`
- makunbound
- `cl_object cl_makunbound(cl_object makunbound)`
- remprop
- `cl_object cl_remprop(cl_object symbol, cl_object indicator)`
- set
- `cl_object cl_set(cl_object symbol, cl_object value)`
- symbolp
- `cl_object cl_symbolp(cl_object object)`
- symbol-function
- `cl_object cl_symbol_function(cl_object symbol)`
- symbol-name
- `cl_object cl_symbol_name(cl_object symbol)`
- symbol-package
- `cl_object cl_symbol_package(cl_object symbol)`
- symbol-plist
- `cl_object cl_symbol_plist(cl_object symbol)`
- symbol-value
- `cl_object cl_symbol_value(cl_object symbol)`

##### Description