% Class 9: Multi-Tasking Map % David Evans % 2013-09-26 ## Action Items
**PS2 is due Monday, September 30.** The submission form for PS2 will be posted soon. As part of submitting PS2, you will schedule a short (10 minute) demo/review with one of the course staff. All team members are expected to participate in the demo, except in exceptional circumstances. At the demo, you should be prepared to show off your shell and will be asked to try some specific things in your shell and explain things about what happens, as well as answering questions about your design and implementation. # Sequential Map ````rust struct Node { head : int, tail : Option<~Node> } type List = Option<~Node> ; trait Map { fn mapr(&self, &fn(int) -> int) -> List; } impl Map for List { fn mapr(&self, f: &fn(int) -> int) -> List { match(*self) { None => None, Some(ref node) => { Some(~Node{ head: f(node.head), tail: node.tail.mapr(f) }) }, } } } ```` You should understand everything in this code. If you don't feel comfortable with functions that take other functions as inputs or return new functions as results and recursive data structions and procedures on them, you should read John McCarthy's [_Recursive Functions of Symbolic Expressions and their Computation by Machine (Part I)](http://www-formal.stanford.edu/jmc/recursive.html) (_Communications of the ACM_, April 1960). If you prefer a more "colorful" presentation, I would recommend reading [Chapter 4](http://www.computingbook.org/Problems.pdf) and [Chatper 5](http://www.computingbook.org/Data.pdf) from a [highly-rated but lowly-ranked and rarely-used introductory computing textbook](http://www.amazon.com/Introduction-Computing-Explorations-Language-Machines/dp/1463687478/ref=cm_cmu_pg__header). You should be able to translate the program examples from the Scheme language used there into Rust. Another interesting writing from John McCarthy is [_Progress and its Sustainability_](http://www-formal.stanford.edu/jmc/progress/index.html). Although, you might want to consider his predictive ability in light of this one also: [_Networks Considered Harmful for Electronic Mail_](http://www-formal.stanford.edu/jmc/harmful.html) (December 1989). > The reason why telefax will supplant email unless email is separated > from special networks is that telefax works by using the existing > telephone network directly. To become a telefax user, it is only > necessary to buy a telefax machine for a price between $1,000 and > $5,000 (depending on features) and to publicize one's fax number on > stationery, on business cards and in telephone directories. Once this > is done anyone in the world can communicate with you. No complicated > network addresses and no politics to determine who is eligible to be > on what network. Telefax is already much more widely used than email, > and a Japanese industry estimate is that 5 percent of homes will have > telefax by 1995 and 50 percent by 2010. This is with a $200 target > price. ... More generally, suppose the same need can be met either > by buying a product or subscribing to a service. If the costs are at > all close, the people who sell the product win out over those selling > the service. Why this is so I leave to psychologists, and experts in > marketing, but I suppose it has to do with the fact that selling > services requires continual selling to keep the customers, and this > keeps the prices high. I hope my pessimism about institutions is > unwarranted, but I remember a quotation from John von Neumann to some > effect like expecting institutions to behave rationally is like > expecting heat to flow from a cold place to a hot place. Were institutions more rational than John McCarthy predicted, or is there some other reason why his prediction was so wrong?