Skip to content

Latest commit

 

History

History
53 lines (53 loc) · 1.74 KB

TODO.md

File metadata and controls

53 lines (53 loc) · 1.74 KB

TODO list

  • text handling
    • UTF-8 aware String class
    • byte arrays
  • modules, import, export
  • type system
    • unit type?
    • bottom type?
    • top type?
    • nullability
      • explicit option type?
      • null keyword?
      • allow variables to be null?
      • operating with null vars?
    • typedefs (can alias a typelist)
      • let the lists' types either add their contained types to the larger typelist, or only add the meta-type to the larger typelist
    • operating with variants
      • get the concrete type of a value as a string (function typeOf(variable) or unary operator typeof variable?)
      • concretize variant to type
      • get value as type by type name, throw error if the stored type isn't what the programmer expects (this should be a language construct)
      • even if functions specify a sum type as a return type, at runtime, the value returned has a non-composite type
    • type inference
    • inheritance
    • multiple inheritance?
    • interfaces?
    • abstract types?
    • enums (Java-like?)
  • operators
    • ternary, lexer + parser + codegen
    • range, codegen
    • compund assignments, codegen
    • member access, codegen
    • subscript, parser + codegen
    • operator overloading
  • for loop: multiple declarations, fix ambiguous grammar
    • for each loop
  • properly define an identifier
  • prefix notation in arguments
  • allow default type for method definitions?
  • name mangling
    • disallow declarations starting with _xyl_?
    • multiple modules linker name conflicts
    • multiple scope name conflicts
    • llvm ir struct name conflicts
  • try-catch, throw, exceptions (finally block?)
  • first-class support for hashmaps
  • lambdas and anon funcs
  • switch / pattern matcher
  • standard library
  • metaprogramming
    • templates?
    • macros?
  • reflection...?