/
TODO
47 lines (43 loc) · 1.47 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
NEXT:
- destructuring (in FN, LET, everywhere else)
- refactor DEFN, DEFMACRO, LET, BINDING(?) to make use of above
miscellaeny
-----------
- MACROEXPAND
- SPEED test. run core specs a few times and time.
- everything in ::Rouge should be accessible via rouge.builtin
- organise boot.rg
- test the whole core
- omit Ruby from tracebacks?
- better exceptions/errors
- readline autocomplete
- package as a gem?
ruby interop
------------
- accessing the scope/self (DSLs!)
- proc or lambda? setting ARITY.
- DEFN/DEFMACRO/etc. should create strict lambdas, but FN/#() should not.
Emulate by accepting |*a| and selecting ourselves how strict we want to be.
"hard" tasks
------------
- have a core "apply" function which can be used by eval, defmacro, etc.
- re-org to allow "compilation" phase: (defmacro a [] b) without a "b" in
context should fail immediately.
- probably generic walking would be nice here
- macro interpretation in one pass before regular evaluation: this would
effect the desired outcome, I think?
core lang
---------
- NON-dynamic/special vars
- INTERN
- FOR
- (def a/b) should not create #'user/a/b, lol.
- multi-form defn: (defn x ([a] ...) ([a b] ...))
- seqs
- atoms (actually multithreaded), refs, agents
- (. x y)
- rest of the clojure core API (maybe even in clojure.core ns)
- clojure-ish IO libraries which expose async IO
- defprotocol -- looks important! ISeq, ISeqable, ISequential and what have
you.
- metadata on all collections (not just symbols)