Category:Factor: Difference between revisions

m
Change awkward wording
m (Add links to various programming languages mentioned. Get straight the point with the first sentence.)
m (Change awkward wording)
Line 27:
Factor comes with many practical features, including a REPL, a self-contained help browser, an object inspector, a debugger/code walker, a deployment tool, editor integration for most popular text editors and IDEs, and introspection capabilities useful for developers. Factor has a fully-featured library, including things such as an HTTP server/client, bindings to graphics libraries and databases, a C FFI, a cross-platform GUI framework, on down to niche things like polynomial arithmetic. Factor features an object system that takes inspiration from [[Common Lisp]] and [[Self]].
 
Most code tends to be expressed naturally in a functional manner. Factor comes with many combinators (higher-order functions) that you typically seeseen in functional languages, such as <code>map</code>, <code>filter</code>, <code>reduce</code>, and many more. Although most things can be done efficiently without mutation, Factor doesn't shy away from it when it's useful. Typically, mutatingMutating words end with an exclamation pointpoints (by convention). Factor provides lexical and dynamic variables which can make writing imperative code more natural, or allows one to clean up code that performs a lot of stack shuffling.
 
One of Factor's greatest strengths is its ability to factor words into smaller words. Due to the nature of concatenative programming, this is typically a cut and paste job that can be done almost anywhere there is whitespace. Factor also has impressive metaprogramming capabilities. Since Factor is almost entirely written in Factor, there is full introspection support, including seamless access to Factor's parser, allowing one to define new syntax. Factor also offers Lisp-style macros, and in general, Factor code can be treated like a collection ([https://en.wikipedia.org/wiki/Homoiconicity homoiconicity]).
1,827

edits