Factor/FAQ/What's Factor like?Why is there a distinction between words and quotations? Words and quotations are used in different places. Factor programs are built out of words, which are just compositions of other words. Words are invoked simply by naming them. Words contain metadata about their module, source location, and other things in addition to the code. If a word is on the stack, it is called with Is Factor purely functional, like Haskell? No, it allows arbitrary side effects and the standard library includes several mutable data structures and imperative I/O. Why not? It makes things much simpler. Effects don't need to be sequenced explicitly, as in Haskell. (No one has yet implemented anything like monads or uniqueness types in Factor, but we would welcome that development.) A broader range of algorithms can be used when mutability is included. It is certainly possible to write Factor code in a purely functional way, and there are a lot of interesting possibilities to explore here. It may be possible, but no one has yet designed a metaprogramming system in a purely functional language with the degree of flexibility that Factor allows. Why is Factor dynamically, rather than statically, typed? For basically the same reason: it makes things more simple and flexible, allowing a high degree of metaprogramming. Additionally, a flexible enough type system for concatenative languages has not yet been designed. However, Factor 2.0 may include optional static typing, if a suitable type system can be found. Does Factor have variables? Yes. Most commonly, Factor uses dynamically scoped variables in the But aren't dynamically scoped variables bad? They are, if they're used for everything by default. But usually, data is passed around using the stack. Dynamically scoped variables are used for a number of wider things where it would be awkward to pass data through the stack, such as prettyprinter settings, the state of a the XML parser, and a partially assembled array. Why are the stack shufflers given names like It is actually possible to use shufflers of this form using a vocabulary called This revision created on Wed, 7 Jan 2009 19:32:51 by slava |
|
|
All content is © 2008-2010 by its respective authors. By adding content to this wiki, you agree to release it under the BSD license. |
|