In this lab students will experiment with string processing. They use string primitives and string recursion to pull apart and assemble strings. The cryptography topic unites these string applications. They also write procedures whose result is a procedure, to show them how one can create procedures depending on input data. There are four units in the lab: 1) In the first a procedure is returned as the result of a procedure. The procedure is an encrypter: it takes a character input and produces a string of one character that encrypts the input. 2) The second asks for a procedure to shuffle two strings into a new string. Here the lab mistakenly uses pairs when students have not yet seen them. The lab could be assigned after pairs have been introduced, but it can easily be done before, with a change of the specification to avoid pairs. The specification for the procedure unshuffle asks for the result as a pair of strings. To make the lab doable for people without knowledge of pairs, we can change the specification of unshuffle to return a string in which its argument has been unshuffled---s1 is the first half of the string and s2 is the second half. So: > (unshuffle "afbgchdiej") "abcdefghij" We can do without split. zap can use helpers first-half and second-half that return the first and second half of a string (assumed to be of even length). > (first-half "abcdefgh") "abcd" > (second-half "abcdefgh") "efgh" The deliverables must change: there is no need to do split, instead do first-half and second-half. 3) The third unit asks them to write zap to use the shuffle process on one string which is first split. 4) The fourth unit builds a string-encrypter from an encrypter, returning a procedure that inputs a string and outputs a new string that is the result of appending the results of applying the encrypter to each character in the input string. Finally it asks for a procedure that combines several string-encrypter procedures.