Christopher C. Aycock
Christopher C. Aycock
## Major Each of these are expected to take multiple weeks worth of work. This list is roughly in order of how critical the feature is. - ~~Software engineering (CI,...
Empirical compiles to VVM bytecode, which is then interpreted by dispatching to a runtime. VVM has a linear IR and has statically-typed vector-aware opcodes. This has excellent performance for many...
Suggested by @llllllllll, use the compiler-optimized routines for safe integer arithmetic, setting the failed result to `nil`. For example: ``` x = ...; y = ...; if (__builtin_add_overflow(x, y, &z))...
TL;DR From the roadmap (#1), we want streaming computation, even on arbitrary expressions and user-defined functions. ``` func wavg(xs, ws): return sum(xs * ws) / sum(ws) end let trades =...
The new metaprogramming tools for defining types currently don't work with function-call syntax. ``` >>> data I = Int64 >>> I("12") Error: wrong number of arguments; expected 0 but got...
We currently can't use `print()` on Dataframes. The reason is that VVM's `print` is overloaded to builtin types, which was necessary in the dark ages of Empirical (ie., last week)....
Recursive functions require that the traits (and return type) be explicitly listed: ``` func factorial(n: Int64) pure, transform, linear -> Int64: if n == 0: return 1 end return n...
Empirical's new metaprogramming features don't work well with each other. ### Specializations Imagine a generic function: ``` func foo(a, b): return a + b end ``` This allows an overload...
`print()` inside a function definition removes purity, but there is no returned value to track. `var` inside a function definition does not necessarily remove purity because outside effects are not...
Functions can accept a *docstring*: ``` func foo(x: Int64): """ Some amazing notes here! """ return x + 1 end ``` However, there is currently no way to retrieve it....