Skip to content

Latest commit

 

History

History
57 lines (57 loc) · 3.54 KB

TODO.org

File metadata and controls

57 lines (57 loc) · 3.54 KB

Syntax

Bootstrap in :=.

Allow | as a binary selector character when not used for headers.

Implement “&foo” in message sends as “&foo: True”.

Core use of ::= binding.

Implement creation of local variables for assignments.

Implement generalized word-quoting. foo{any text…} http://atomo-lang.org/docs/macros.html#section_macro-quotes

Implement bytes{1 2 3 4} to create literal ByteArrays.

Implement words{foo bar baz} to tokenize a list of words.

Implement p{/usr/lib/foo} to create literal Path objects.

Implement q{} to create ##() literal/read-time arrays.

Implement glob{foo?.*.c} to create Glob objects.

Implement r{[a-z](.*)[ ]} to create regular expression matchers.

Implement math{3 + 4 * 5} to apply the precedence library’s `math to it.

Implement comment{} or why{} or doc{} for comments and reclaim double-quotes.

Dictionary cleanups.

Extract ExtensibleMapping protocol.

Separate Dictionary from Set, inheriting from ExtensibleMapping.

Implement OrderedDictionary.

Eliminate overrideThis in favor of traits-style method requirements.

Implement method definition as “signature := body”.

Requires method header rewrite at macro-expansion time.

STARTED Implement “%” as a binary selector lexeme unless used as Eventually prefix.

Implement mutator selector pattern of “foo:=” and sunset “foo:”.

Externalize `setTo: rules into data structures.

STARTED Implement Ruby === for includes:/select:/case-statement usage.

With different assymetrical selector, e.g. isCaseOf:. Root -> \=. Collection -> includes:, Block -> applyWith:. Regex -> matches:.

Implement \=:= as pattern-matching binding.

Requires generation of ::= statements. Requires destructuring of Patterns/Partials

Implement initial setting of a local to a literal as a static initialization.

Requires some VM support to instantiate the context with the values.

Implement | as a special binary macro for chaining expressions and shell pipelines.

Change block header syntax to [|( … ) body ].

Swap {} with []

Libraries

Finish XTreams refactoring of base libraries.

Mini-language for unit testing.

Add DoubleFloat support to FFI.

System Structure

Implement file loading as parse-compile-then-execute and use/install the result object.

Re-implement the bootstrap assembly in terms of these compiled file-methods.

Implement an Eco-system style repository of modules that can be loaded per-caller.

Rename files to mirror module name (very closely if not identically).

Documentation

Anatomy-style documentation tool based on the parser.

Literate-style documentation facility based on the doctool.

Promotion

Implement online tutorials using doc tool

Install Packages for various OS/distributions (pkg/)

Quality

Unit tests

NOTE ExtensibleSequence’s removeFirst/removeFirst:/removeLast/removeLast: are just open-coded versions of first/first:/last/last: where the firstIndex or lastIndex are updated.

Fix File’s size method (…).