'''Factor''' is a [[concatenative programming language]] designed and implemented by [[Slava Pestov]]. Factor's main influences are [[Joy programming language|Joy]], [[Forth programming language|Forth]], and [[Lisp programming language|Lisp]], with minor influencesinfluence from [[Self programming language|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 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 besidesother than types andor tuples:; Factor supports [[predicate class]]es and union classes. Among Factor's builtinintegrated compound datatypes areinclude [[linked list]]s, [[vector]]s and [[hashtable]]s. ForThe numbers,language Factoralso supports [[floating point]], ratios, [[complex numbers]] and arbitrary precision integers.
ForWhen cases whereusing the stack wouldsystem beis toodoes awkwardnot suffice, Factor gives you [[dynamic scoping]] is a supported alternative. Factor has a quickly growing library which already supports [[continuation]]s, an [[Web server|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.
HistoricallySo far, there have been two implementations of Factor: aboth [[Java programming language|Java]] implementation and a [[C programming language|C]] implementations have been constructed, but the Java implementation is deprecated. Both haveare bundled with an [[interpreter]] and a [[compiler]]. The Java version has been abandoned because it is much slower and less flexible than the C one.
==External links==
|