define method trim (sequence :: , remove? :: , #key from = #"both") => (sequence :: ) let keep? = complement(remove?); let start-index = member?(from, #[left:, both:]) & find-key(sequence, keep?); let end-index = member?(from, #[right:, both:]) & find-last-key(sequence, keep?); let end-index = if (end-index) end-index + 1 end; // Still #f if end-index is #f. if (~start-index & ~end-index) sequence else copy-sequence(sequence, start: start-index | 0, end: end-index | sequence.size) end end method trim;