Factor/Design issues

Mutating vs non-mutating words

Factor has many words that do almost the same thing but have different stack effects, such as remove-nth ( n seq -- seq' ) and delete-nth ( n -- seq ). This results in having to remember two different names for every concept. One proposed solution is to use Scheme's naming convention for mutation, which is a ! at the end of the word. Then we'd have delete-nth for creating new sequences and delete-nth! for mutating existing ones. What would the stack effects be on these new versions?

One issue is that ! is already used for comments. One proposed idea is to change the comment character to #. The # symbol is a word in the make vocabulary, but this could be changed. Ideas?

An alternative approach is to move towards using Persistent data structures for hashtables and vectors and making just a single word do both mutation and non-mutation, with the stack effect being word ( ... old-obj ... -- new-obj ). Maybe you would still need two names. Anyone?

Should integers be sequences?

Should associative lists be first-class tuples or remain as arrays of 2arrays?

Should at and nth be the same concept?

Erlang-style concurrency or 1:1 native threading?

This revision created on Thu, 18 Sep 2008 19:18:01 by erg