\hrule
* === 

 - defined in ::  =src/./built_ins.cpp:158:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
Takes 0 or more arguments and returns =t= if all arguments are equal and =()= otherwise.
  #+END:
\hrule
* =>= 

 - defined in ::  =src/./built_ins.cpp:175:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =>== 

 - defined in ::  =src/./built_ins.cpp:193:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =<= 

 - defined in ::  =src/./built_ins.cpp:211:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =<== 

 - defined in ::  =src/./built_ins.cpp:231:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =+= 

 - defined in ::  =src/./built_ins.cpp:249:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =-= 

 - defined in ::  =src/./built_ins.cpp:262:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =*= 

 - defined in ::  =src/./built_ins.cpp:285:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =/= 

 - defined in ::  =src/./built_ins.cpp:306:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =**= 

 - defined in ::  =src/./built_ins.cpp:327:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =%= 

 - defined in ::  =src/./built_ins.cpp:343:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =assert= 

 - defined in ::  =src/./built_ins.cpp:359:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =define= 

 - defined in ::  =src/./built_ins.cpp:371:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =mutate= 

 - defined in ::  =src/./built_ins.cpp:433:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =if= 

 - defined in ::  =src/./built_ins.cpp:458:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =quote= 

 - defined in ::  =src/./built_ins.cpp:480:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =quasiquote= 

 - defined in ::  =src/./built_ins.cpp:485:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =and= 

 - defined in ::  =src/./built_ins.cpp:583:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =or= 

 - defined in ::  =src/./built_ins.cpp:594:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =not= 

 - defined in ::  =src/./built_ins.cpp:605:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =while= 

 - defined in ::  =src/./built_ins.cpp:615:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =lambda= 

 - defined in ::  =src/./built_ins.cpp:693:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =special-lambda= 

 - defined in ::  =src/./built_ins.cpp:705:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =eval= 

 - defined in ::  =src/./built_ins.cpp:713:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =begin= 

 - defined in ::  =src/./built_ins.cpp:725:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =list= 

 - defined in ::  =src/./built_ins.cpp:741:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =pair= 

 - defined in ::  =src/./built_ins.cpp:745:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =first= 

 - defined in ::  =src/./built_ins.cpp:755:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =rest= 

 - defined in ::  =src/./built_ins.cpp:766:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =set-type= 

 - defined in ::  =src/./built_ins.cpp:777:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =delete-type= 

 - defined in ::  =src/./built_ins.cpp:789:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =type= 

 - defined in ::  =src/./built_ins.cpp:796:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =info= 

 - defined in ::  =src/./built_ins.cpp:828:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =show= 

 - defined in ::  =src/./built_ins.cpp:910:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =addr-of= 

 - defined in ::  =src/./built_ins.cpp:922:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =generate-docs= 

 - defined in ::  =src/./built_ins.cpp:928:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =print= 

 - defined in ::  =src/./built_ins.cpp:937:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =read= 

 - defined in ::  =src/./built_ins.cpp:945:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =exit= 

 - defined in ::  =src/./built_ins.cpp:962:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =break= 

 - defined in ::  =src/./built_ins.cpp:973:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =memstat= 

 - defined in ::  =src/./built_ins.cpp:978:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =try= 

 - defined in ::  =src/./built_ins.cpp:982:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =load= 

 - defined in ::  =src/./built_ins.cpp:997:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =import= 

 - defined in ::  =src/./built_ins.cpp:1008:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =copy= 

 - defined in ::  =src/./built_ins.cpp:1019:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =error= 

 - defined in ::  =src/./built_ins.cpp:1027:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =symbol->keyword= 

 - defined in ::  =src/./built_ins.cpp:1034:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =string->symbol= 

 - defined in ::  =src/./built_ins.cpp:1043:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =symbol->string= 

 - defined in ::  =src/./built_ins.cpp:1055:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =concat-strings= 

 - defined in ::  =src/./built_ins.cpp:1064:0=
 - type :: =:cfunction=
 - docu :: 
  #+BEGIN:
TODO
  #+END:
\hrule
* =pe= 

 - defined in ::  =pre.slime:2:40=
 - type :: =:macro=
 - arguments :: :
    - postitional :: =expr=
 - docu :: none
\hrule
* =when= 

 - defined in ::  =pre.slime:21:37=
 - type :: =:macro=
 - arguments :: :
    - postitional :: =condition=:
    - rest :: =body=
 - docu :: 
  #+BEGIN:
Special form for when multiple actions should be done if a
condition is true.

{{{example_start}}}
(when (not ())
  (print "Hello ")
  (print "from ")
  (print "when!"))

(when ()
  (print "Goodbye ")
  (print "World!"))
{{{example_end}}}

  #+END:
\hrule
* =unless= 

 - defined in ::  =pre.slime:28:41=
 - type :: =:macro=
 - arguments :: :
    - postitional :: =condition=:
    - rest :: =body=
 - docu :: 
  #+BEGIN:
Special form for when multiple actions should be done if a
condition is false.
  #+END:
\hrule
* =n-times= 

 - defined in ::  =pre.slime:35:35=
 - type :: =:macro=
 - arguments :: :
    - postitional :: =times=, =action=
 - docu :: 
  #+BEGIN:
Executes action times times.
  #+END:
\hrule
* =let= 

 - defined in ::  =pre.slime:52:64=
 - type :: =:macro=
 - arguments :: :
    - postitional :: =bindings=:
    - rest :: =body=
 - docu :: none
\hrule
* =cond= 

 - defined in ::  =pre.slime:66:19=
 - type :: =:macro=
 - arguments :: :
    - rest :: =clauses=
 - docu :: none
\hrule
* =define-special= 

 - defined in ::  =pre.slime:69:81=
 - type :: =:macro=
 - arguments :: :
    - postitional :: =name-and-args=:
    - rest :: =body=
 - docu :: none
\hrule
* =construct-list= 

 - defined in ::  =pre.slime:110:14=
 - type :: =:macro=
 - arguments :: :
    - rest :: =body=
 - docu :: 
  #+BEGIN:

{{{example_start}}}
(construct-list
  i <- '(1 2 3 4 5)
  yield (* i i))
{{{example_end}}}

(construct-list
  i <- '(1 2 3 4)
  j <- '(A B)
  yield (pair i j))

(construct-list
  i <- '(1 2 3 4 5 6 7 8)
  when (evenp i)
  yield i)

  #+END:
\hrule
* =apply= 

 - defined in ::  =pre.slime:115:28=
 - type :: =:macro=
 - arguments :: :
    - postitional :: =fun=, =seq=
 - docu :: 
  #+BEGIN:
Applies the funciton to the sequence, as in calls the function with
ithe sequence as arguemens.
  #+END:
\hrule
* =define-package= 

 - defined in ::  =pre.slime:129:24=
 - type :: =:macro=
 - arguments :: :
    - postitional :: =name=:
    - rest :: =body=
 - docu :: none
\hrule
* =null?= 

 - type :: =:lambda=
 - arguments :: :
    - postitional :: =x=
 - docu :: 
  #+BEGIN:
Checks if the argument is =nil=.
  #+END:
\hrule
* =number?= 

 - type :: =:lambda=
 - arguments :: :
    - postitional :: =x=
 - docu :: 
  #+BEGIN:
Checks if the argument is a number.
  #+END:
\hrule
* =symbol?= 

 - type :: =:lambda=
 - arguments :: :
    - postitional :: =x=
 - docu :: 
  #+BEGIN:
Checks if the argument is a symbol.
  #+END:
\hrule
* =keyword?= 

 - type :: =:lambda=
 - arguments :: :
    - postitional :: =x=
 - docu :: 
  #+BEGIN:
Checks if the argument is a keyword.
  #+END:
\hrule
* =pair?= 

 - type :: =:lambda=
 - arguments :: :
    - postitional :: =x=
 - docu :: 
  #+BEGIN:
Checks if the argument is a pair.
  #+END:
\hrule
* =string?= 

 - type :: =:lambda=
 - arguments :: :
    - postitional :: =x=
 - docu :: 
  #+BEGIN:
Checks if the argument is a string.
  #+END:
\hrule
* =lambda?= 

 - type :: =:lambda=
 - arguments :: :
    - postitional :: =x=
 - docu :: 
  #+BEGIN:
Checks if the argument is a function.
  #+END:
\hrule
* =macro?= 

 - type :: =:lambda=
 - arguments :: :
    - postitional :: =x=
 - docu :: 
  #+BEGIN:
Checks if the argument is a macro.
  #+END:
\hrule
* =special-lambda?= 

 - type :: =:lambda=
 - arguments :: :
    - postitional :: =x=
 - docu :: 
  #+BEGIN:
Checks if the argument is a special-lambda.
  #+END:
\hrule
* =built-in-function?= 

 - type :: =:lambda=
 - arguments :: :
    - postitional :: =x=
 - docu :: 
  #+BEGIN:
Checks if the argument is a built-in function.
  #+END:
\hrule
* =callable?= 

 - type :: =:lambda=
 - arguments :: :
    - postitional :: =x=
 - docu :: none
\hrule
* =end= 

 - type :: =:lambda=
 - arguments :: :
    - postitional :: =seq=
 - docu :: 
  #+BEGIN:
Returns the last pair in the sqeuence.

{{{example_start}}}
(define a (list 1 2 3 4))
(printf (end a))
{{{example_end}}}

  #+END:
\hrule
* =last= 

 - type :: =:lambda=
 - arguments :: :
    - postitional :: =seq=
 - docu :: 
  #+BEGIN:
Returns the (first) of the last (pair) of the given sequence.

{{{example_start}}}
(define a (list 1 2 3 4))
(printf (last a))
{{{example_end}}}

  #+END:
\hrule
* =extend= 

 - type :: =:lambda=
 - arguments :: :
    - postitional :: =seq=, =elem=
 - docu :: 
  #+BEGIN:
Extends a list with the given element, by putting it in
the (rest) of the last element of the sequence.
  #+END:
\hrule
* =extend2= 

 - type :: =:lambda=
 - arguments :: :
    - postitional :: =seq=, =elem=
 - docu :: 
  #+BEGIN:
Extends a list with the given element, by putting it in
the (rest) of the last element of the sequence.
  #+END:
\hrule
* =append= 

 - type :: =:lambda=
 - arguments :: :
    - postitional :: =seq=, =elem=
 - docu :: 
  #+BEGIN:
Appends an element to a sequence, by extendeing the list
with (pair elem nil).
  #+END:
\hrule
* =length= 

 - type :: =:lambda=
 - arguments :: :
    - postitional :: =seq=
 - docu :: 
  #+BEGIN:
Returns the length of the given sequence.
  #+END:
\hrule
* =sublist-starting-at-index= 

 - type :: =:lambda=
 - arguments :: :
    - postitional :: =seq=, =index=
 - docu :: none
\hrule
* =list-without-index= 

 - type :: =:lambda=
 - arguments :: :
    - postitional :: =seq=, =index=
 - docu :: none
\hrule
* =increment= 

 - type :: =:lambda=
 - arguments :: :
    - postitional :: =val=
 - docu :: 
  #+BEGIN:
Adds one to the argument.
  #+END:
\hrule
* =decrement= 

 - type :: =:lambda=
 - arguments :: :
    - postitional :: =val=
 - docu :: 
  #+BEGIN:
Subtracts one from the argument.
  #+END:
\hrule
* =range= 

 - type :: =:lambda=
 - arguments :: :
    - keyword :: =from= =(0)=, =to=
 - docu :: 
  #+BEGIN:
Returns a sequence of numbers starting with the number defined by the
key =from= and ends with the number defined in =to=.
  #+END:
\hrule
* =range-while= 

 - type :: =:lambda=
 - arguments :: :
    - keyword :: =from= =(0)=, =to=
 - docu :: 
  #+BEGIN:
Returns a sequence of numbers starting with the number defined
by the key 'from' and ends with the number defined in 'to'.
  #+END:
\hrule
* =map= 

 - type :: =:lambda=
 - arguments :: :
    - postitional :: =fun=, =seq=
 - docu :: 
  #+BEGIN:
Takes a function and a sequence as arguments and returns a new
sequence which contains the results of using the first sequences
elemens as argument to that function.
  #+END:
\hrule
* =reduce= 

 - type :: =:lambda=
 - arguments :: :
    - postitional :: =fun=, =seq=
 - docu :: 
  #+BEGIN:
Takes  a function  and  a  sequence as  arguments  and applies  the
function to  the argument sequence.  This only works correctly  if the
given  function  accepts a  variable  amount  of parameters.  If  your
funciton  is   limited  to  two  arguments,   use  [[=reduce-binary=]]
instead.
  #+END:
\hrule
* =reduce-binary= 

 - type :: =:lambda=
 - arguments :: :
    - postitional :: =fun=, =seq=
 - docu :: 
  #+BEGIN:
Takes  a function  and  a  sequence as  arguments  and applies  the
function to the argument sequence. reduce-binary applies the arguments
*pair-wise* which means it works  with binary functions as compared to
[[=reduce=]].
  #+END:
\hrule
* =filter= 

 - type :: =:lambda=
 - arguments :: :
    - postitional :: =fun=, =seq=
 - docu :: 
  #+BEGIN:
Takes a function and a sequence as arguments and applies the
function to every value in the sequence. If the result of that
funciton application returns a truthy value, the original value is
added to a list, which in the end is returned.
  #+END:
\hrule
* =zip= 

 - type :: =:lambda=
 - arguments :: :
    - postitional :: =l1=, =l2=
 - docu :: none
\hrule
* =unzip= 

 - type :: =:lambda=
 - arguments :: :
    - postitional :: =lists=
 - docu :: none
\hrule
* =enumerate= 

 - type :: =:lambda=
 - arguments :: :
    - postitional :: =seq=
 - docu :: none
\hrule
* =printf= 

 - type :: =:lambda=
 - arguments :: :
    - keyword :: =sep= =(" ")=, =end= =("\n")=:
    - rest :: =args=
 - docu :: 
  #+BEGIN:
A  wrapper for  the built-in  function [[=print=]]  that accepts  a
variable number of arguments and also provides keywords for specifying
the printed separators  (=sep=) between the arguments  and what should
be printed after the last argument (=end=).
  #+END:
\hrule
* =define-class= 

 - defined in ::  =oo.slime:22:22=
 - type :: =:macro=
 - arguments :: :
    - postitional :: =name-and-members=:
    - rest :: =body=
 - docu :: 
  #+BEGIN:
Macro for creating simple classes.
  #+END:
\hrule
* =->= 

 - defined in ::  =oo.slime:25:24=
 - type :: =:macro=
 - arguments :: :
    - postitional :: =obj=, =meth=:
    - rest :: =args=
 - docu :: none
\hrule
* =math->= 

 - type :: =:package=
 - arguments :: :
    - rest :: =args=
 - docu :: none
\hrule
* =math-> pi= 

 - defined in ::  =math.slime:5:4=
 - type :: =:number=
 - value :: =3.141593=
 - docu :: 
  #+BEGIN:
Tha famous circle constant.
  #+END:
\hrule
* =math-> abs= 

 - defined in ::  =math.slime:9:4=
 - type :: =:lambda=
 - arguments :: :
    - postitional :: =x=
 - docu :: 
  #+BEGIN:
Accepts one argument and returns the absoulte value of it
  #+END:
\hrule
* =math-> sqrt= 

 - defined in ::  =math.slime:13:4=
 - type :: =:lambda=
 - arguments :: :
    - postitional :: =x=
 - docu :: 
  #+BEGIN:
Accepts one argument and returns the square root of it
  #+END:
\hrule
* =math-> make-vector3= 

 - defined in ::  =pre.slime:52:63=
 - type :: =:constructor=
 - arguments :: :
    - postitional :: =x=, =y=, =z=
 - docu :: 
  #+BEGIN:
This is the handle to an object of the class vector3
  #+END:
\hrule
* =math-> make-vector3 define-class= 

 - defined in ::  =oo.slime:22:22=
 - type :: =:macro=
 - arguments :: :
    - postitional :: =name-and-members=:
    - rest :: =body=
 - docu :: 
  #+BEGIN:
Macro for creating simple classes.
  #+END:
\hrule
* =math-> make-vector3 ->= 

 - defined in ::  =oo.slime:25:24=
 - type :: =:macro=
 - arguments :: :
    - postitional :: =obj=, =meth=:
    - rest :: =args=
 - docu :: none
