Moved assignment, binding, and case statement macro code into src/syntax/.
[cslatevm.git] / TODO.org
blobde0131accb722074cfe4172cdf7f63413528bae9
1 * Syntax
2 ** DONE Bootstrap in :=.                                          :macro:global:
3 ** DONE Allow | as a binary selector character.
4 ** DONE Implement "&foo" in message sends as "&foo: True".
5 ** DONE Core use of ::= binding.                                  :macro:global:
6 ** BOOTSTRAP Implement creation of local variables for assignments.
7 ** STARTED Implement "%" as a binary selector lexeme unless used as Eventually prefix.
8 ** TODO Implement mutator selector pattern of "foo:=" and sunset "foo:". :global:
9 ** TODO Externalize `setTo: rules into data structures.
10 ** STARTED Implement Ruby === for includes:/select:/case-statement usage. :vm:support:
11    With different assymetrical selector, e.g. isCaseOf:.
12    Root -> \=. Collection -> includes:, Block -> applyWith:. Regex -> matches:.
13 ** TODO Implement \=:= as pattern-matching binding.                      :macro:
14    Requires generation of ::= statements.
15    Requires destructuring of Patterns/Partials
16 ** TODO Implement method definition as "signature := body".
17    Requires method header rewrite at macro-expansion time.
18 ** TODO Implement initial setting of a local to a literal as a static initialization.
19    Requires some VM support to instantiate the context with the values.
20 ** TODO Implement generalized word-quoting. foo{any text...} http://atomo-lang.org/docs/macros.html#section_macro-quotes :lexer:
21 *** TODO Implement math{3 + 4 * 5} to apply the precedence library's `math to it.
22 *** TODO Implement bytes{1 2 3 4} to create literal ByteArrays.
23 *** TODO Implement w{foo bar baz} (or words{}) to tokenize a list of words.
24 *** TODO Implement path{/usr/lib/foo} to create literal Path objects.
25 *** TODO Implement r{[a-z](.*)[ ]} to create regular expression matchers.
26 *** TODO Implement glob{foo?.*.c} to create Glob objects.
27 *** TODO Implement q{} to create ##() literal/read-time arrays.
28 *** TODO Implement comment{} or why{} or doc{} for comments and reclaim double-quotes.
29 ** TODO Implement | as a special binary macro for chaining expressions and shell pipelines.
30 ** TODO Change block header syntax to [|( ... ) body ]. :lexer:global:incompatible:
31 ** TODO Swap {} with []                              :lexer:global:incompatible:
32 * Libraries
33 ** TODO Finish XTreams refactoring of base libraries.
34 ** TODO Mini-language for unit testing.
35 ** TODO Add DoubleFloat support to FFI.
36 * System Structure
37 ** TODO Implement file loading as parse-compile-then-execute and use/install the result object.
38 ** TODO Re-implement the bootstrap assembly in terms of these compiled file-methods.
39 ** TODO Implement an Eco-system style repository of modules that can be loaded per-caller.
40 ** TODO Rename files to mirror module name (very closely if not identically).
41 * Documentation
42 ** TODO Anatomy-style documentation tool based on the parser.
43 ** TODO Literate-style documentation facility based on the doctool.
44 * Promotion
45 ** Implement online tutorials using doc tool
46 ** Fill out rosetta code http://www.rosettacode.org/wiki/Category:Slate
47 ** Install Packages for various OS/distributions (pkg/)
48 * Quality
49 ** Unit tests
50 ** Fix bugs on http://code.google.com/p/slate-language/issues/list
51 ** NOTE ExtensibleSequence's removeFirst/removeFirst:/removeLast/removeLast: are just open-coded versions of first/first:/last/last: where the firstIndex or lastIndex are updated.
52 ** TODO Fix File's size method (...).