Factor is a concatenative programming language designed and implemented by Slava Pestov. Factor's main influences are Joy, Forth, and Lisp, with minor influences from Self.
Like other concatenative languages, Factor has a postfix syntax, meaning that you write the arguments of a function before the function name. As an example, Hello world in Factor is
"Hello world" print
Factor is dynamically typed, and a very unique object system accompanies it. In Factor, there are more than 20 base types, and then users can make their own datatypes using tuples. There is no inheritance, but there is delegation as in Self. Additionally, there are other ways to make classes besides types and tuples: Factor supports predicate classes and union classes. Among Factor's builtin compound datatypes are linked lists, vectors and hashtables. For numbers, Factor supports floating point, ratios, complex numbers and arbitrary precision integers.
For cases where the stack would be too awkward, Factor gives you dynamic scoping. Factor has a quickly growing library which already supports continuations, an HTTP server, an SDL binding and a GUI library.
One of Factor's main goals is the to be useful for interactive and test-driven development, which is why Factor is, at its core, a safe version of Forth.
Historically, there have been two implementations of Factor: a Java implementation and a C implementation. Both have an interpreter and a compiler. The Java version has been abandoned because it is much slower and less flexible than the C one.