Dependencies:R7RS-small has the right kind of define-record-type
vector->list of the kind you want is in R7RS-small
Suggested name changes, mostly to align with SRFI 1:
transduce -> list-transduce
append-map -> tappend-map (a typo?)
tcat -> tconcatenate
tdedupe -> tdelete-neighbor-dupes
tremove-duplicates -> tdelete-duplicates
tpartition-all -> tsegment
tpartition-by -> tpartition
tindex -> tenumerate
Semantics:
tdedupe and tremove-duplicates need to accept an equality predicate. If the underlying hash table package can't handle arbitrary equality predicates, it should at least handle eq?, eqv?, and equal?.
tremove-duplicates needs to specify which element is retained, presumably the earliest.
I don't understand the purpose of the tref argument to thalt-when. Without
this argument it seems to be the same as drop-while, except with the
predicate negated. Add some more explanation clarifying its purpose.
Implementation issues:
Don't encourage the use of reverse!. It can be very slow when the garbage collector has a write barrier, because it mutates every pair, in which case it is faster to use a functional reverse.
Markup:
ttake and tdrop (in the transduce procedure) need to be in code font.
Same with treplace in the treplace procedure.
In thalt-when, pred? is code font instead of italics.
John Cowan
http://vrici.lojban.org/~cowan xxxxxx@ccil.orgKnowledge studies others / Wisdom is self-known;
Muscle masters brothers / Self-mastery is bone;
Content need never borrow / Ambition wanders blind;
Vitality cleaves to the marrow / Leaving death behind. --Tao 33 (Bynner)