CSc 404 Assignment 2

Blankity-Blank Assignment


Jan 28
40 pts
Feb 12

Create a Tom's lisp function fillin which takes two arguments, both lists. It returns the first argument, with each member equal to the atom _ replaced with a member of the second list, starting with the first member and taking them in rotation. If the first list contains fewer _ than the length of the second, only the first part of the second list will be used. If it contains more, members of the second list will be reused,in rotation. Place your definition(s) in a file which can be loaded into Tom's Lisp.

For instance:

lsp>(load "fillin.lsp") rotate lsp>(fillin '(Please leave the _ , _ , and the _ in the _) --->'(box paint ducks)) (Please leave the box , paint , and the ducks in the box) lsp>(fillin '(_ _ _ _) '(hi there how are things today)) (hi there how are) lsp>(fillin '(A _ and a _ went by and the _ ran into the _ and fell on the _) --->'(car truck)) (A car and a truck went by and the car ran into the truck and fell on the car) lsp>(fillin '(nothing to do) '(this doesnt matter)) (nothing to do)
My solution used three cases, two of which are recursive.

While it is not a requirement, it may be useful to define a helper function which simply moves the first member of a list to its end.

lsp>(rotate '(a b c)) (b c a) lsp>(rotate '(x)) (x) lsp>(rotate '(1 2 3 4 5 6 7 8)) (2 3 4 5 6 7 8 1)
You might want to use the built-in append function in writing this.


When your function works, is nicely formatted and documents, submit it using this form.