* DONE continuation test1 CLOSED: [2020-03-31 Di 23:07] #+begin_src scheme (define add-2 ()) (+ 2 (call/cc (lambda (cont) (set! add-2 cont) 3))) ;; = 5 (add-2 10) ;; 12 (add-2 100) ;; 102 #+end_src * DONE docs as a external dict to make LO smaller CLOSED: [2020-03-29 So 20:00] * DONE and_then_action NAS_Action CLOSED: [2020-03-29 So 20:01] * DONE renames [8/8] CLOSED: [2020-03-29 So 20:49] - [X] define-syntax -> define-macro - [X] mutate -> mutate! - [X] pair -> cons - [X] first -> car - [X] rest -> cdr - [X] generate-docs -> generate-docs-file - [X] break -> show-environment - [X] mytry -> attempt * DONE rename modifying functions to have suffix '!' CLOSED: [2020-03-29 So 21:00] * DONE write and/or as macros CLOSED: [2020-03-29 So 21:27] * DONE consisitent names (Lisp_Object_Type_to_string .. lisp_object_to_string) CLOSED: [2020-03-29 So 21:27] * DONE use better type names: u32, .. CLOSED: [2020-03-31 Di 11:36] * DONE when copying LO, check if string itself is being copied CLOSED: [2020-03-31 Di 11:58] * DONE update header files CLOSED: [2020-03-31 Di 11:58] * TODO incorporate the print library for slime objects - define a =%lo= to print =Lisp_Objects= print("The value of node is: %lo", node); // 이렇게 * TODO Make specific SLIME macros - =SLIME_UNICODE= - =SLIME_WINDOWS= - =SLIME_LINUX= - =SLIME_DEBUG= - =SLIME_RELEASE= - =SLIME_DISTRIBUTE= * TODO assert list length for arguemns of macros because all the args are in last of pcs, so we can assert length * TODO rename cs to stack * TODO #f #t #void * TODO define-syntax-shorthand (define-syntax-shorthand [ vector ] ) (define-syntax-shorthand { hash-map } ) * TODO revert ats to use function pointers if capturs are not working anyways use the stack to store immediate results, so no captures are necessary * TODO continuation test2 let a cont have a not expanded macro in cs and before calling the cont, expand the macro and let it bake in * TODO doc generation * TODO source code locations * TODO function let (let fac ([n 10]) (if (zero? n) 1 (* n (fac (sub1 n))))) 3628800 * TODO rename slime to plisk * TODO BUG 1: eval dot notation #+BEGIN_SRC lisp (eval `(+ . ,(list 1 2 3))) ;; should output 6 ;; throws error instead #+END_SRC * TODO BUG 2: eval dot notation #+BEGIN_SRC lisp (begin (define a (list 1 2 3)) (eval `(+ . ,a))) ;; should output 6 ;; outputs 0 #+END_SRC * TODO BUG 3: unnecessary copying? define((test val),"") { fetch(val) ; printf("addr of arg: %lld\n", (unsigned long long)&val); return Memory::nil; }; then: #+begin_src slime (define a "a") (test a) ;; will output an adress (if 1 (test a) 2) ;; will output a different adress #+end_src * TODO BUG 4: arg parsing #+begin_src slime (define (range (:from 0) to) ...) #+end_src should error since we can't have positional args after keywords. right now, 'to' is silently ignored..