Factor ist eine moderne, stackbasierte und concatenative Programmiersprache, die Slava Pestov 2003 zunächst als Skriptsprache für ein Spiel („JFactor“) entwarf. Sie führt die Stack-Idee von Forth und die funktionale Ausdruckskraft von Joy zu einer praxistauglichen Sprache zusammen: dynamische Typisierung, automatische Speicherverwaltung, ein JIT-Compiler (Factor-VM) und eine umfangreiche Standardbibliothek aus Vokabularen — inklusive GUI- und Web-Framework (Furnace).
Words, Vokabulare und Stack-Effekte
Funktionen heißen in Factor Words und werden mit Stack-Effekt-Kommentaren definiert. Der Stack-Effekt ( x y -- z ) dokumentiert, welche Werte ein Word vom Stack nimmt und welche es zurücklässt:
USE: math
: quadrat ( n -- n^2 ) dup * ;
5 quadrat ! → 25
{ 1 2 3 } [ dup * ] map ! → { 1 4 9 }
Wichtige Wörter
- Stack-Shuffler:
dup,drop,swap,over,nip,tuck,pick,rot,-rot - Definition:
: name ( effekt ) body ;, lokale Variablen mit::, Vokabulare perUSE:undIN: - Quotations und Kombinatoren:
[ ... ],if,when,unless,bi,tri,cleave,spread,each,map,filter,reduce,while,loop
Die Entwicklung ist imagebasiert: Der Compiler übersetzt Words beim Laden in effizienten Maschinencode. Damit verbindet Factor die Produktivität dynamischer Sprachen mit der Geschwindigkeit kompilierter Systeme — ähnlich wie PostScript als älteres stackbasiertes System zeigt, dass das Modell auch für Seitenbeschreibung taugt.