by Daniel "q66" Kolesa
This project appears to have gone dormant. It will be removed from the list soon unless new activity is noted.
Embeddable high level scripting language that compiles to Lua.

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), ', ')) ]")
Information updated 01/22/14
View Comments