Browse files

More documentation updates

  • Loading branch information...
Breckin Loggins
Breckin Loggins committed Feb 1, 2012
1 parent c3a7fcc commit f37dbbe8f4ef674d740c29b9a1520522aa9f91a0
Showing with 37 additions and 18 deletions.
  1. +22 −4 TODO.txt
  2. +15 −14 prelude/bootstrap.sugar
@@ -1,11 +1,20 @@
- - Add pushdictionary '{' syntax in bootstrap
- - Add popdictionary '}' syntax in bootstrap
- - Add '<' + symbol + '>' createmacro syntax
- - Add symbol unbind macro with '~' syntax
- If full symbol is bound to a command or macro, it should be executed by discriminator rather than that symbol pushed
on the stack (could still push the symbol on the stack with a quote/unquote operation or macro - need to test this)
- Using above method, get rid of the "!" execution syntax. Not needed and we'll be more FORTH-like
+ - Change the "ignore" feature to be a string quote feature. By default, it pushes the whole string on the stack
+ - Change the bootstrap to take a second "end quote" character. This COULD be the same character, but if the user makes it
+ different it will allow for nested quoting
+ - Add /* in bootstrap to start a quote
+ - Add */ in bootstrap to end a quote and pop the string off the stack (this will serve as comments)
+ - Make /* and */ use its own dictionary so we can validate that every */ started with a /*
+ - Add ability to read a string or symbol on the stack as if it had been typed in by the user
+ - Remove existing "quote" feature (this might be reintroduced as the "escape" functionality later)
+ - Change all macros to use the new quoting functionality
+ - Add quoted pushdictionary '{' syntax in bootstrap
+ - Add quoted popdictionary '}' syntax in bootstrap
+ - Add '<' + symbol + '>' createmacro syntax
+ - Add symbol unbind macro with '~' syntax
- Add type macro: pops a symbol and returns the type bound to that symbol
- Add overloaded method for all types that pop up to n-args off the stack and create a new value of that type (in other words, a data constructor for each type)
- Add create-op: pops a type and a bunch of args (as needed by the type), and instantiates a new value for that type, pushing it on the stack, using that type's
@@ -27,6 +36,12 @@ TYPE SYSTEM:
+- How do we do selective UNQUOTE in a quoted syntax?
+- Escaping
+ - Want to allow a character to serve as the "symbol escape" character
+ - Is the SAME as character escape sequences, including \U+xxxx unicode sequences, or different?
- Let's not try to interpret C-like code right away. Let's do:
1. Haskell-like type construction syntax
back in time in the stack history. And reexecuting based on new edits, BUT this will require token synchronization so
as the user is typing we don't execute a bunch of nonsense afterward.
+- Opportunity for more rethinking of boostrap syntax: right now we have the "ignore operator" as the very first thing, which
+ makes it impossible for our language to start out in the literate style. Is this OK?
- Add structural checking for is-op (structural equivalence)
- I'm pretty sure we can build cons cells from type constructors
- Built-in list type
@@ -36,32 +36,33 @@ symbols bound to opcodes, types, and readers, so we now have enough syntax to ex
commands and create macros.
- dup: duplicates the top item on the stack -
-`tmp `!set
-`tmp `!get
-`tmp `!get
+ `!pushdictionary
+ `tmp `!set
+ `tmp `!get
+ `tmp `!get
+ `!popdictionary
- swap: reverses the order of the top two items on the stack -
-`tmp1 `!set
-`tmp2 `!set
-`tmp1 `!get
-`tmp2 `!get
+ `!pushdictionary
+ `tmp1 `!set
+ `tmp2 `!set
+ `tmp1 `!get
+ `tmp2 `!get
+ `!popdictionary
- The reader macro. Invokes a reader by the given name -
`symbol `!reader `!read - Invoke the symbol reader -
`!reader `!read - Invoke the reader by the given symbol -
-!createmacro - Create the macro with the quoted stack contents -
-!set - Set the macro binding to the # character -

0 comments on commit f37dbbe

Please sign in to comment.