Factor/FAQ/Vocabulary

What is a word?

A word is our (from Forth) name for a named function.

What does concatenative mean?

See Concatenative language.

What is a quotation?

A quotation is a name for an anonymous function, originally introduced in Lisp. In syntax, it is a piece of code enclosed in square brackets. A quotation is an ordinary piece of data, and it can be treated in a similar manner to an array.

What is a combinator?

A combinator is our word for a higher-order function, or a word that takes a quotation as an argument. Examples of combinators include if and map.

What is a vocabulary?

A vocabulary is our name for a module. At one time, there was a distinct concept of modules and vocabularies, but it is now merged.

What is a parsing word?

A 'parsing word' in Factor is akin to an 'immediate word' in Forth. With a comparison to Lisp, it is somewhat like a reader macro but often used like a regular macro. Defining a parsing word extends the parser, and it is used to introduce new definition syntax or datatype literals.

What is a generic word?

A generic word, taken from the Lisp terminology of a generic function, is a word that dispatches on the class of its arguments. This means that methods can be defined on it. In Factor, words, rather than objects, handle the dispatch.

What is a word property?

In Factor, each word (but not quotation) is associated with a hashtable of word properties (abbreviated "word props"). These word props store metadata about the word, like where it was defined and its documentation, but not core properties like its definition or name. The entire hashtable of word props is accessible with the word props>>, and a single word property is accessed with word-prop. Word properties must be used carefully, as they are more 'global' than variables.

What do all the mnemonics in stack effect declarations mean?

See http://docs.factorcode.org/content/article-effects.html.

This revision created on Thu, 17 Mar 2016 18:47:59 by pirj (Quotations are back from Lisp)