Skip to content

Latest commit

 

History

History
163 lines (114 loc) · 3.69 KB

TODO.mkd

File metadata and controls

163 lines (114 loc) · 3.69 KB

TODO for BiwaScheme

Next release (0.6.3)

  • id=biwa-script

  • div id=biwa-console

  • .. syntax

High priority

  • LICENCE to biwascheme(-min).js

  • [r6rs] Errors and conditions

  • [r6rs] library definition and loading

  • biwas(repl) should 'write' the result

    #(1 2) 1,2

  • (print (js-eval "null")) raises error (only on Node?) -- should think more about .to_display, .to_write, .toString, .inspect BiwaScheme.to_display : used by (display), etc. BiwaScheme.to_write : used by (write), etc. BiwaScheme.inspect : used by BiwaScheme.inspect .toString : used by Firebug?

    display -> write <- inspect | v toString

||Type ||Source||write ||display||inspect||toString ||boolean||#t ||'#t' || || ||'true' (js) ||nil ||() ||'()' || || ||'nil' ||number ||1 ||'1' || || ||'1' (js) ||symbol ||'a ||'a' || || ||''a' ||string ||"a" ||'"a"' ||'a' || ||'"a"' or "'a'" (js) ||char ||#\a ||'#\a' ||'a' ||[write]||

||vector ||#(1 2)||"#(1 2)"|| || ||"1,2" (js) ||pair ||'("a")||'("a"')"|| ||inspect||[inspect]

||function||(js-clojure f)||"#<...>"||

||enum-set ||e|| || || ||"#<...>" ||hashtable||h||"#<...>" || || || ||record ||r||"#<...>" || || || ||port ||p||"#<...>" || ||"#<...>"||

||undef || || || || ||"#"

||null ||(js-eval "null")||"#" || || || ||undefined||(js-eval "undefined")||"#" || || ||

  • unbound variable reference in define-macro returns undefined (yhara/#15)

Middle priority

-- list->js-array, js-array->list

-- check uses of assert_closure

  • maybe should use assert_procedure
  • rename assert_closure to assert_lambda?

-- fix leaking variables

-- dynamic-wind

-- handle error on biwas(REPL)

Low priority

--- [r6rs] vector quasiquote --- [r6rs] case-lambda --- [r6rs] syntax-case, syntax-rules --- [r6rs] some functions for numbers --- should try http://github.com/dyoo/js-numbers/ ?

--- [r6rs][node] i/o

--- use Node for unit tests --- use biwas instead of Makefile

--- combination of with-output-to-port and values

--- better parser (for missing syntaxes)

  • #\vtab, etc.
  • #b, #o
  • a program "1;;" raises error: unbound symbol: '1;;'
  • Regexp literal (#/foo/)

--- list-sort with compare function implement quick sort in CPS

Website

-- reference

--- make test/browser_functions/ online --- merge server.js to web.js?

-- better example for index.html (display "hello") does not work without #bs-console

-- provide compiled older versions of biwascheme.js

--- better css

  • same header for demos, tracer, etc (frame?)

Refactoring and maintenance

--- remove _types.js

--- remove test/console_test.js

May need fix

  • passing multiple values to continuation (receive a (call/cc (lambda (c) (c 1 2 3))) (display a)) should be (1 2 3)

  • equal should stop (let ((x (list 'a 'b 'c 'a)) (y (list 'a 'b 'c 'a 'b 'c 'a))) (set-cdr! (list-tail x 2) x) (set-cdr! (list-tail y 5) y) (equal? x y))

Interesting SRFIs

Partially implemented:

  • 1 list libraries
  • 13 string libraries
  • 19 time
  • 38 (write-with-shared-structure)
  • 43 vector libraries

Not yet:

  • 26 (cut)
  • 39 (parameterize) is it identical to the one in R7RS?

Maybe:

  • 41 stream
  • 42 (list-ec)
  • 44 collection
  • 48 (format) (intermediate, ~d, ~b, etc.)
  • 78 (check) -> list-ec
  • 88 keyword (like 'test:')