You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

2.9 KiB

DONE continuation test1

CLOSED: [2020-03-31 Di 23:07]

  (define add-2 ())
  (+ 2 (call/cc (lambda (cont) (set! add-2 cont) 3)))
  ;; = 5
  (add-2 10)
  ;; 12
  (add-2 100)
  ;; 102

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]

  • define-syntax -> define-macro

  • mutate -> mutate!

  • pair -> cons

  • first -> car

  • rest -> cdr

  • generate-docs -> generate-docs-file

  • break -> show-environment

  • 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<string>, 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

  (eval `(+ . ,(list 1 2 3)))
  ;; should output 6
  ;; throws error instead

TODO BUG 2: eval dot notation

  (begin
   (define a (list 1 2 3))
   (eval `(+ . ,a)))
  ;; should output 6
  ;; outputs 0

TODO BUG 3: unnecessary copying?

define((test val),"") { fetch(val) ; printf("addr of arg: %lld\n", (unsigned long long)&val); return Memory::nil; };

then:

(define a "a")
(test a)          ;; will output an adress
(if 1 (test a) 2) ;; will output a different adress

TODO BUG 4: arg parsing

(define (range (:from 0) to) ...)

should error since we can't have positional args after keywords. right now, 'to' is silently ignored..