You need to re-learn about accumulator-style programming. Accumulator-style programming does something with the very first element in the list, sticks the result in the "accumulator" - the formal parameter, in this case it is "names-so-far," and repeats the process again with the second element, which is the very first element of the (rest alop).