Skip to content

Latest commit

 

History

History
272 lines (272 loc) · 7.58 KB

todo.md

File metadata and controls

272 lines (272 loc) · 7.58 KB
  • optimize
    • tail opt
    • remove types from expr
    • rc all values
    • rc all types?
  • change member access
  • add methods
  • struct
  • generic native func
  • generic user func
  • generic structs
  • recursion
  • generic native type
  • arrays
  • bools
  • rationals
  • strings
  • spliced arrays
  • sets
  • queues
  • inner functions
  • function types
  • return inner function?
  • fix closures, make the scope chain RC'd (or ARC'd) and find a smarter way to merge the closures
  • optional
  • cast (some(1) || error(''))
  • operator overloading
  • default params
  • default params in native functions
  • generic specialization (with UD, i think there's a bug)
  • less copies
  • more tail call optimizations? ([] + ... => ...)
  • avoid specializations for unknown types
  • limits
    • depth limit
    • recursion limit
    • size limit
  • unions
  • recursive unions
  • make struct binds use vectors
  • lambda functions
  • blank structs/unions
  • dynamic native functions (Array<T> == Array<T>)
  • tuples
  • tuple as recursive member
  • mappings
  • double quoted strings
  • bundle the root compilation scope and the interner to one struct
  • I think we turn static functions to real function all the time instead of once
  • root evaluation scope
  • delete every function, pub, and derive we can get away with
  • replace all vec params with slices
  • make it so we don't have to clone declarations
  • integrate rtcell into the root scopes
  • small ints shouldn't need heap allocation
  • make defaults evaluate at runtime
  • can assert detect when equality happens and report it?
  • make turbofish useful
  • more std
    • sets
    • sorting
    • dict delete
    • dict pop
    • hash methods
    • cmp methods
    • aggregators
    • range
    • filter
    • any, all
    • takewhile, skipwhile
    • take, skip
    • multizip
    • unzip
    • enumerate
    • assert
    • array multiplication
    • str concat
    • str multiplication
    • str split
    • str chars
    • regex?
    • binary search/insort
    • partial
    • nth
    • first/last
    • default equals/hash/cmp/to_string for many types
    • auto mapping for types with eq/hash
    • auto sort
    • infinite sequence
    • slice sequence type
    • ne for most native types
    • member_wise
    • is_error/if_error with error matching
    • get_error
    • dynamic "display"
    • add str to something that implements to_str?
    • is_close
    • bool xor
    • float pow
    • sqrt
    • nth root
    • nth last
    • aggregators
    • reduce should be in generators
    • everything in excel
    • atan2
    • geometric distribution
    • some things in python
    • sequence::manifest
    • json?
    • chain sequence?
    • set xor
    • xors
    • sleep
    • chunks
    • random
    • is_infinite
    • mean/std for distributions
    • sort reverse (dyn)
    • matrices
      • eye
      • full
      • diag
      • determinant
      • inverse
      • transpose
      • multiply
      • map
    • complex numbers
    • time of day?
    • list shuffle
    • numerically safe addition
    • byte types?
    • better flatten
    • complex trig?
    • lru_cache?
    • compression/encryption/hashing
    • generatoe/seq count(i, eq)
    • threading??
    • json of option
    • base64
    • bit_or and bit_and for bools?
    • sinh
    • fix the mean/geo-mean implementations to be better and clearer
    • counter_mode generic
    • xray version const
    • to_hash key adapter
    • optional::map_or should have 2 generic params
    • most dyn functions should have non-dyn versions
    • a lot of the sequence/stack functions can be removed
    • generator::all/any (bools)
    • delete sequence::group
    • sequence::is_infinite
    • improve rank_avg and rank_eq to be more efficient and generic
    • stack::to_array and to_array_reversed should be flipped
    • sub{date, dur}
    • make sample_variance/sample_standard_deviation generic
    • duration cmp/eq/format?
    • fraction constructor uses float div and there's no reason for it
    • int trunc_div
    • split debug to a function that gets the internal rep, and one that prints it
  • tests for:
    • is_error
    • if error (inc. tail recursion)
    • display
    • bool display
    • display from UD type
    • bool hash
    • bool cmp
    • float mod
    • float div
    • float ceil
    • float trunc
    • float cmp
    • float to str
    • int bitwise ops
    • int pow
    • int ne
    • int hash
    • int cmp
    • sequence rpush
    • sequence insert
    • sequence set
    • sequence swap
    • str hash
    • str cmp
    • function call in default (inner function call in default?)
    • internal structs
    • test all kinds of failures
      • including runtime violations
    • get operator
    • mapping get
    • hexa/bin numbers
    • scientific notation
    • float neg
    • is_close
    • float sqrt
    • float pow
    • mapping entries
    • all the integer edge-cases
    • zip1
    • unzip1
    • repeat (with n and infinite)
    • lambda with defaults
    • str find
    • str split/nsplit/rsplit edge cases
    • members for recursive types
    • errors:
      • VariableAsType
      • OverloadAsType
    • sin
    • turbofish with zero params
    • dyn with with zero params
    • sum/product/mean/geomean? with complex types
    • str reverse
    • negative datetimes
    • duration operations
    • negative duration
    • date sub/add
    • date/datetime str
    • format_replace
    • flatten with empty
    • map_values
    • mapping::clear
    • str::contains
    • int::digits
    • windows that are wider than the original generator
    • to_stack
    • add{date, duration}
    • negative durations
  • reduce macros in builtin/core
  • better errors
    • compilation error tracing
    • dynamic binding error tracing
    • runtime error tracing
  • get operator
  • auto type for specialization (foo::<., Stack<int>>(1, stack()))
  • cells instead of dicts for namespaces
  • All the TODOs
  • all the warnings
  • test scripts
  • imports/include files
  • turn this to a library
  • documentation
  • ! operator (as shorthand for .value)?
  • code documentation
  • newline/escape chars in literals
  • straighten out the "errors in container/compound" question
  • find and remove duplicates
  • string interpolation?
  • auto return type (fn foo () -> $)
  • in native functions, when you're going to return something big (like when adding two sequences), check that you have room for it first
  • type aliases?
  • total function call limit
  • maximum search limit (count().nth(0, (x: int)->{x<0}))
  • execution time limit
  • "side effect" limitations (allow/forbid sleep, display, assert)
  • declarations in lambdas
  • cache xtypes?
  • create a native type registry, so we don't discern them by name
  • cache factory functions
  • forward references?
  • native dynamic functions?
  • line number in RTCELL?
  • warnings (like when assigning variable to magic method?)
  • make [str].sum use join
  • custom seeding for hash
  • make sure nan inf and negzero are impossible
  • time provider?
  • managedXError should be a cow
  • upgrade pest
  • WASM