Functional Problem Solving (CSC 151 2013F) : EBoards
Primary: [Front Door] [Schedule] - [Academic Honesty] [Disabilities] [Email] [FAQ] [IRC] [Teaching & Learning] [Grading]
Current: [Assignment] [EBoard] [Lab] [Outline] [Partners] [Reading]
Sections: [Assignments] [EBoards] [Examples] [Handouts] [Labs] [Outlines] [Partners] [Readings]
Reference: [Setup] - [Functions A-Z] [Functions By Topic] - [Racket] [Scheme Report (R5RS)] [R6RS] [TSPL4]
Related Courses: [Davis (2013F)] [Rebelsky (2010F)] [Weinman (2012F)]
Misc: [SamR] [Glimmer Labs] [CS@Grinnell] [Grinnell] [Issue Tracker (Course)]
Overview
Admin
Welcome to "Pass the Buck" Problem Solving
Remove one element
Pass the remaining elemtns to our left to get a count
Add 1
(define toby-count (lambda (books) (+ 1 (alex-count (cdr books)))))
(define alex-count (lambda (books) (+ 1 (andrew-count (cdr books)))))
(define please-find-all-the-books-by-david-campbell-in-this-list (lambda (books) (if (null? books) null (let ([abook (car books)] ; The first book [rest (cdr books)]) ; All but the first book (if (is-by-david-cambell abook) (cons abook (please-find-all-the-books-by-david-campbell-in-this-list rest)) (please-find-all-the-books-by-david-campbell-in-this-list rest))))))
(map by-david-campbell? books) (for-each ? books) -> Returns nothing (repeat ? books) - Won't work with lists
We have learned a more general strategy for repetition.
(define proc (lambda (lst) (if (null? lst) simple-result (extend (proc (cdr lst))))))
(define length (lambda (lst) (if (null? lst) 0 (+ 1 (length (cdr lst))))))
(define bbdc (lambda (lst) (if (null? lst) null (magic (bbdc (cdr lst))))))
Primary: [Front Door] [Schedule] - [Academic Honesty] [Disabilities] [Email] [FAQ] [IRC] [Teaching & Learning] [Grading]
Current: [Assignment] [EBoard] [Lab] [Outline] [Partners] [Reading]
Sections: [Assignments] [EBoards] [Examples] [Handouts] [Labs] [Outlines] [Partners] [Readings]
Reference: [Setup] - [Functions A-Z] [Functions By Topic] - [Racket] [Scheme Report (R5RS)] [R6RS] [TSPL4]
Related Courses: [Davis (2013F)] [Rebelsky (2010F)] [Weinman (2012F)]
Misc: [SamR] [Glimmer Labs] [CS@Grinnell] [Grinnell] [Issue Tracker (Course)]
Samuel A. Rebelsky, rebelsky@grinnell.edu
Copyright (c) 2007-2013 Janet Davis, Samuel A. Rebelsky, and Jerod Weinman. (Selected materials are copyright by John David Stone or Henry Walker and are used with permission.)

This work is licensed under a Creative Commons Attribution 3.0 Unported License. To view a copy of this
license, visit http://creativecommons.org/licenses/by-nc/3.0/
or send a letter to Creative Commons, 543 Howard Street, 5th Floor,
San Francisco, California, 94105, USA.