* TODO =assert_equal_type= macro in testing * Build-in forms ** DONE + CLOSED: [2018-09-18 Di 12:14] ** DONE - CLOSED: [2018-09-18 Di 12:14] ** DONE * CLOSED: [2018-09-18 Di 12:14] ** DONE / CLOSED: [2018-09-18 Di 12:14] ** TODO > ** TODO < ** TODO = ** DONE if CLOSED: [2018-09-18 Di 12:14] ** DONE and (short circuiting) CLOSED: [2018-10-05 Fr 22:21] ** DONE or CLOSED: [2018-10-05 Fr 22:21] ** DONE not CLOSED: [2018-10-05 Fr 22:21] #+begin_src emacs-lisp (not 1) ;; == (not . (1 . nil)) (not (expression 1 3)) ;; == (not . ((expression . (1 . (3 . nil))) . nil)) (not) ;; == (not . nil) (not 1 2) ;; == (not . (1 . (2 . nil))) #+end_src #+RESULTS: : t ** TODO first (car) ** TODO rest (cdr) ** TODO pair (cons) ** TODO load (import) ** TODO define ** TODO lambda ** TODO progn ** TODO eval ** TODO quote ** TODO print ** TODO read ** TODO help * Types - Symbol - Number - String - Cons-cell (list) - lambda function lambda - built-in function * Arbeitsweise 1) Parse to AST 2) Start with namespace only containing the built-ins 3) every AST node has its own namespace, inherting the one from its parent (pointer / references) because when a function sets a variable within an upper namespace it should infact change the environment even if the function exited