HOME WEB NEWS IMAGES CLASSIFIEDS YELLOW PAGESPOLLS - SURVEYS WIKI COUNTRIES PHOTOS US UK INDIA
Avoo.com provides meta search results from various sources

Factor_(programming_language)


Google



talent agencies, New york, beverly hills, los angeles, sunset boulevard

Dvd video, video players, dvd players, dvd ram, dvd rom, dvd player

Used cars
Find great deals on Used Cars in the UK, Over 130,000+ cars to search from, Sell your car for free, Used Car Prices, Car Dealers, Car Insurance, Car Loans and much more.
1

Factor
Paradigm stack-based
Appeared in 2003
Developer Slava Pestov
Latest release0.91/ December 13, 2007
Typing discipline strong, dynamic
Influenced by Joy, Forth, Lisp, Self
Influenced Cat
OS Windows, Mac OS, Linux, others
License BSD license
Website factorcode.org

Factor is a dynamically typed concatenative programming language whose design and implementation is led by Slava Pestov. Factor\'s main influences are Joy, Forth, Lisp and Self. As of December 2007, the current version of Factor is 0.91. A 1.0 release is planned in 2008.

Like other concatenative languages, Factor has a postfix syntax, meaning that you write the arguments of a function before its 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 is a small group of base types, and users and the standard library can make their own classes using tuples and other mechanisms. There is no inheritance, but there is delegation as in Self. Additionally, there are other ways to make classes other than types or tuples; Factor supports predicate classes and union classes. Factor\'s built-in compound datatypes include fixed and variable length vectors and hashtables. The language also supports floating point, and arbitrary precision integers. Linked lists, complex numbers and fractions are implemented in the standard library.

Factor was originally only interpreted, but is now fully compiled (the non-optimizing compiler basically unrolls the interpreter loophttp://factor-language.blogspot.com/2007/09/two-tier-compilation-comes-to-factor.htmlhttp://factor-language.blogspot.com/2008/01/compiler-overhaul.html). The optimizing machine code compiler is written entirely in Factor. It does not output standalone executables, but rather generates machine code which is saved in the image. This image can then be deployed with the deploy-tool which produces a minimal tree shaken image along with the VM.

When using the stack system does not suffice, lexical and dynamic scoping are supported alternatives. Factor has a growing library which supports vocabularies, continuations, an HTTP server and accompanying web framework, an OpenGL binding, a GUI library, an XML parser, and several other utilities.

One of Factor\'s main goals is to be useful for interactive and test-driven development, which is why Factor is, at its core, a safe version of Forth. Factor is dynamically typed, but the compiler assesses the stack depth of words (functions).

Contents

Lisp Like Features

Factor shares a lot of features in common with Lisp, including; a homoiconic syntax, garbage collection, HOFs, compile-time evaluation, REPL, treeshaker, etc.

Unlike Lisp, function composition proceeds left to right rather than:

(languages (applicative (in (backwards (is (composition (function)))))))Slava Pestov, reddit comment

This is an inherent feature in concatenative languages.

Implementations

So far, both Java and C implementations have been constructed. The Java implementation is deprecated and no longer maintained. The native runtime of the C version is continually shrinking as an increasing proportion of Factor is self-hosted. However, there will likely always be a portion of Factor written in C.

Though Factor does not adhere to an external standard the way C does, the language is heavily documented.

External links

References

This article is licensed under the GNU Free Documentation License. It uses material from Wikipedia


Advertise with Us | Search Marketing | Help | Suggest a Site | Privacy Policy
© 2008 www.avoo.com. All rights reserved.