留学生辅导 CSE 3341, Scheme Lab

CSE 3341, Scheme Lab

Grade: This assignment is worth 40 points.

Copyright By PowCoder代写 加微信 powcoder

Note: We haven’t worked on Scheme enough for me to give you a really interesting project in it, so this

is really a fairly simple (and, by itself, pointless) assignment. All it does is make sure that you get some

practice in thinking functionally (which is a useful thing) and play with Scheme a little bit. If you want to get

into Scheme, and it is worth getting into, the book The Structure and Interpretation of Computer Programs

by Abelson and Sussman is highly recommended.

Problem: The assignment is to write a function, eliminateNsort, which will receive two lists of num-

bers as arguments. Suppose L1, L2 are the two lists. The result returned by the function should be obtained

from L1, L2 as follows: start with L1 and remove from it all those elements that are also in L2; then sort the

remaining elements into non-decreasing order to get the result list.

The terminology in the last paragraph is somewhat incorrect. You do not actually want to remove anything

from L1; you are doing this assignment functionally so values of variables are not supposed to change.

(Scheme does have a set! operation which will let you change the values of variables; do not use it; it is not

meant for such problems. Also do not use the sort function that is in the Scheme library. Going further, you

are to follow the blanket restriction of not using any built-in Scheme functions that we have not mentioned

in class.) Rather, the value returned by eliminateNsort will be a (new) list which will have all the

elements of L1, except those that appear in L2, and further, this list will be sorted.

Make sure that if some value x appears more than once in L1, then x appears the same number of times in

the result returned by eliminateNsort unless x also appears in L2 in which case it will not at all appear

in the result.

Test your function with several combinations of L1, L2 values (don’t forget empty lists). You may find the

“,trace command useful. It lets you ‘trace’ a function everytime it is called. You can get help on the trace

command (as well as some other scheme48-specific commands) by using the “,help” or “,?” command

of scheme48. In preference to the “,load” command, which does not display the results of evalutating the

last expression in the loaded file, you may wish to use the Scheme expression “(load “filename”)”,

which does. (Here, “filename” could be something like “testNonIntersectingLists.scm” or

“test2.scm”.)

Approach: The trick to designing complex Scheme (or any other) programs is of course to define many

functions and to do as little as possible in each. If you follow this rule, you will find this assignment

reasonably straightforward to complete. To say that somewhat differently: do not try to do two things

in a function; if you do, you will likely get in trouble. So any time you find the need for computing

something that is somewhat different from the things that the functions you already have (or the one you are

currently defining) are capable of computing, introduce a new function rather than trying to add on that new

functionality to an existing function.

What to submit: You should submit a single file that contains the definitions of all your functions, including

the main one eliminateNsort. The file itself should be called myfns.scm. Do not use any other name

for the file or for the main function. Other functions that you define may have whatever names you choose.

To make it easy for your grader to find it, eliminateNsort should be the last function defined in your

Use white space appropriately so that your function definitions are easy to read. And include documentation

in the same file (NOT a separate README file). Comment lines in Scheme programs start with a semi-

Submit your lab by placing your file in the appropriate .

The grading system imposes a heavy penalty on late assignments: up to 24 hours late – 10% off the score

received; up to 48 hours late – 25% off; up to 72 hours late – 50% off; more than 72 hours late – forget it!

The lab you submit must be your own work. Minor consultation with your class mates is ok (ideally, any

such consultation should take place on the course discussion forum so that other students can contribute to

the discussion and benefit from the discussion) but the lab should essentially be your own work.

程序代写 CS代考 加微信: powcoder QQ: 1823890830 Email: powcoder@163.com