This should hopefully make the compiler pass thing I want to do possible
2.0 KiB
TODO Items
- sketch of an idea for the REPL: -each compiler pass should be a (procedural?) macro like compiler_pass!("parse", dataproducts: ["ast", "parse_tree"], { match parsing::parse(INPUT) { Ok( PASS.add_artifact( }
-should have an Idris-like cast To From
function
- REPL:
- want to be able to do things like
:doc Identifier
, and have the language load up these definitions to the REPL
- want to be able to do things like
-
change 'trait' to 'interface' -think about idris-related ideas of multiple implementations of a type for an interface (+ vs * impl for monoids, for preorder/inorder/postorder for Foldable)
-
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
-
another idea, allow: type enum { type enum MySubVariant { SubVariant1, SubVariant2, etc. } Variant1(MySubVariant), Variant2(...), }
-
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
- AST : maybe replace the Expression type with "Ascription(TypeName, Box) nodes??
- parser: add a "debug" field to the Parser struct for all debug-related things
-scala-style html"dfasfsadf${}" string interpolations!
*Compiler passes architecture
-ProgrammingLanguageInterface defines a evaluate_in_repl() and evaluate_no_repl() functions -these take in a vec of CompilerPasses
struct CompilerPass { name: String, run: fn(PrevPass) -> NextPass }
-change "Type...." names in parser.rs to "Anno..." for non-collision with names in typechecking.rs
-get rid of code pertaining to compilation specifically, have a more generation notion of "execution type"