Homogeneous data
Typed vectors, nested vectors, matrices, and numerical kernels.
[1 2 3 4]Neo applies the same operations to scalars, vectors, and matrices. It has first-class unknown values and a complete interpreter written in Neo.
{def square (x) {* x x}} {square 5} {square [1 2 3 4]}
25
[1 4 9 16]Current compiler syntax and behavior.
Programs transform vectors.
Vectors are the basic unit of data and computation in Neo.The repository includes a complete interpreter implemented in the language itself. It has its own lexer, parser, evaluator, runtime environment, file runner, and persistent multiline REPL.
It executes Neo's full regression suite. The native compiler remains the path to fast executables; the interpreter is the semantic reference and the next step toward self-hosting.
Neo REPL. Type :quit to exit.
> {var x 40}
40
> {+ x 2}
42
> {def square (value)
... {* value value}}
> {square 6}
36Square brackets hold typed data, parentheses hold mixed data, and braces run code.
Typed vectors, nested vectors, matrices, and numerical kernels.
[1 2 3 4]Dictionaries, mixed values, complex numbers, and stored programs.
(name:"Neo" version:3)Calls, functions, declarations, control flow, and scoped blocks.
{+ 1 2}Scalars broadcast. Vectors are handled element by element. Ordinary arithmetic needs no separate array API.
mapNo foreachNo manual indexing{def affine (x scale bias) {+ {* x scale} bias}} {affine 5 2 1} ; 11 {affine [1 2 3 4] 2 1} ; [3 5 7 9]
{square 5}25{square [1 2 3 4]}[1 4 9 16]{+ [1 2 3] 10}[11 12 13]? can live inside ordinary vectors and participate in arithmetic, comparisons, logic, statistics, and control flow. Errors use the separate value !.
unknown or missing value
runtime error value
true, false, and unknown branches
{var temperature ?} {print {if {< temperature 40} "safe" "too hot" "sensor unavailable"}}
sensor unavailable@ when you need every combination.Normal vector calls are element-wise. Mark an input with @to request a Cartesian product. Two marked vectors produce a matrix; more naturally produce higher-dimensional results.
{+ @[1 2] @[10 20 30]}Statistics, matrices, AI primitives, complex numbers, quaternions, dictionaries, JSON, file I/O, and set operations share Neo's vector model.
filter · reduce · sort · find · JSON · dictionariesmean · variance · sd · min · maxmatmul · transpose · outer · identity · tracerelu · sigmoid · softmax · mse · cross-entropycomplex · quaternion · conjugate · rotationcommand-line args · string concat · string push/pop · file I/O{def layer (input weights bias) {relu {+ {matmul input weights} bias}}}
“Analyze the data, then compile the program.”
Read data, transform vectors, handle missing values, compute statistics, perform matrix operations, and ship the result as a native application.
Sensor processing, control systems, matrices, quaternions, and hardware libraries.
Compact inference pipelines, activations, loss functions, and native deployment.
Vector math, simulation, rotation, procedural systems, graphics and engine libraries.
Statistics, JSON, dictionaries, unknown values, and executable transformation pipelines.
Device interaction, signal processing, small processors, and deterministic memory work.
Heterogeneous data vectors keep code inert. The {run}bridge makes the move from data to execution visible, allowing programs to be generated, extended, and executed using the same vector principles.