Vortex is a dynamic (untyped) language (and strongly checked). It puts emphasis on procedural and functional programming. It also features prototype based OO with possible implementation of class based through extension of syntax and semantics.
It primarily draws inspiration from Lua, Scheme, OCaml/F# and Rust.
Thanks to its Lua base, you can easily embed Vortex in your project. Every Vortex script lives within its own environment, no outer modifications are made. Vortex uses Lua's standard library. New modules are to be written though, so the standard library will be extended.
Any Lua module can be accessed through a special table. Vortex's module system will use custom routines for this, handling loading of macros and so on, which will be incompatible with Lua's. If you want to use Lua modules, use Lua functions.
The language uses a curly braced, free form syntax. That allows very easy implementation, but creates a few constraints. Everything is an expression; there are no statements (althrough some of the expressions are meant to be used as statements).
/* Quicksort */ math.randomseed(os.time()) fn filter(l, f) -> [ seq -> for i, v in ipairs(l) -> if f(v) -> yield v ] fn rec qsort(l) -> |  ->  | x :: xs -> qsort(filter(xs, fn v -> v < x)) ++ [x] ++ qsort(filter(xs, fn v -> v >= x)) let t1 = [ seq -> for i = 1 .. 15 -> yield math.random(1, 99) ] print(e"[ $(tconc(t1, ', ')) ]\n[ $(tconc(qsort(t1), ', ')) ]")