Flesh out TODO, README

This commit is contained in:
greg 2017-12-13 00:52:54 -08:00
parent a7fd515e7b
commit cf0af7e0c9
2 changed files with 29 additions and 17 deletions

View File

@ -1,27 +1,22 @@
TODO:
-null-only language should be called Maaru
-haskell-ish langauge should be called Robo
-typeful scripting language should be called schala
rename accordingly!
-idea for Schala - scoped types - be able to define a quick enum type scoped to a function ro something, that only
is meant to be used as a quick bespoke interface between two other things
-idea for Schala: both currying *and* default arguments!
ex. fn a(b: Int, c:Int, d:Int = 1) -> Int
a(1,2) : Int
a(1,2,d=2): Int
a(_,1,3) : Int -> Int
a(1,2, c=_): Int -> Int
a(_,_,_) : Int -> Int -> Int -> Int
# Schala - a programming language meta-interpreter # Schala - a programming language meta-interpreter
Schala is a Rust-language framework written to make it easy to Schala is a Rust framework written to make it easy to
create and experiment with toy programming languages. It provides create and experiment with toy programming languages. It provides
a common REPL, and a trait `ProgrammingLanguage` with methods a common REPL, and a trait `ProgrammingLanguage` with provisions
for tokenizing text, parsing tokens, evaluating an abstract syntax tree, for tokenizing text, parsing tokens, evaluating an abstract syntax tree,
and other tasks that are common to all programming languages. and other tasks that are common to all programming languages.
Schala is implemented as a Rust library `schala_lib`, which provides a
`schala_main` function. This function serves as the main loop of the REPL, if run
interactively, or otherwise reads and interprets programming language source
files. It expects as input a vector of `PLIGenerator`, which is a type representing
a closure that returns a boxed trait object that implements the `ProgrammingLanguage` trait,
and stores any persistent state relevant to that programming language. The ability
to share state between different programming languages is in the works.
## About
Schala started out life as an experiment in writing a Javascript-like Schala started out life as an experiment in writing a Javascript-like
programming language that would never encounter any kind of runtime value programming language that would never encounter any kind of runtime value
error, but rather always return `null` under any kind of error condition. I had error, but rather always return `null` under any kind of error condition. I had
@ -38,6 +33,8 @@ creating a language name confusingly close to Scala. The naming scheme for
languages implemented with the Schala meta-interpreter is Chrono Trigger languages implemented with the Schala meta-interpreter is Chrono Trigger
characters. characters.
Schala is incomplete alpha software and is not ready for public release.
## Languages implemented using the meta-interpreter ## Languages implemented using the meta-interpreter
* The eponymous *Schala* language is an interpreted/compiled scripting langauge, * The eponymous *Schala* language is an interpreted/compiled scripting langauge,

15
TODO.md Normal file
View File

@ -0,0 +1,15 @@
# TODO Items
* Share state between programming languages
* idea for Schala - scoped types - be able to define a quick enum type scoped to a function ro something, that only is meant to be used as a quick bespoke interface between two other things
* idea for Schala: both currying *and* default arguments!
ex. fn a(b: Int, c:Int, d:Int = 1) -> Int
a(1,2) : Int
a(1,2,d=2): Int
a(_,1,3) : Int -> Int
a(1,2, c=_): Int -> Int
a(_,_,_) : Int -> Int -> Int -> Int