Word renaming (part 2)
Monday, April 28, 2008
Here are the word names that have changed:
- find* -> find-from
- find-last* -> find-last-from
- index* -> index-from
- last-index* -> last-index-from
- subset -> filter
New shorthand words:
- 1 tail -> rest
- 1 tail-slice -> rest-slice
- swap compose -> prepose
Changes to existing word behavior:
- reverse stack effect of assoc-diff, diff
- before? after? before=? after=? are now generic
- min, max can compare more objects than before, such as timestamps
- between? can compare more objects
- <=> returns symbols
There are several motivations at work here. One is that words named
foo*
are a variant of foo
, but otherwise the * is no help to what
the word actually does differently. We’re trying to move away from word
names with stars to something more meaningful.
Code with common patterns that come up a lot, like 1 tail
and
swap compose
, is more clearly understood if these patterns are given a
single name.
Factor’s subset is not equivalent to the mathematical definition of
subset, so it was renamed to filter
to avoid confusion. Along these
same lines, diff
and assoc-diff
are now the more mathematically
intuitive; you can think of diff like set subtraction now,
seq1 seq2 diff
is like seq1 - seq2.
Finally, the “UFO operator” <=>
now returns symbols +lt+ +eq+ +gt+
instead of negative, zero, and positive numbers. The before?
and
after?
words can compare anything that defines a method on this
operator. Since between?
, min
, and max
are defined in terms of these comparison words, they also work on more
objects.
Please let me know if you have any more suggestions for things words that have awkward argument orders, imprecise names, or if you can suggest alternate names for words with stars in their names.