Functional Problem Solving (CSC 151 2014S) : EBoards
Primary: [Front Door] [Schedule] - [Academic Honesty] [Disabilities] [Email] - [FAQ] [Teaching & Learning] [Grading] [Rubric] - [Calendar]
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 (2010S)] [Rebelsky (2013F)] [Weinman (2012F)] [Weinman (2014S)]
Misc: [SamR] [Glimmer Labs] [CS@Grinnell] [Grinnell] [Issue Tracker (Course)]
Overview
We often want to do the same (or similar) computations again and again and again.
(* x x)
(* y y)
(* 2 2)
It would helpful to be able to name that code, and to take different inputs
A fascinating syntax
(define NAME-OF-PROCEDURE (lambda (INPUTS) EXPRESSION)
(define square (lambda (val) (* val val)))
We can call this like any other procedure already in Scheme
(square 5)
Like
(define val 5)
(* val val)
Similarly,
(define weighted-average
(lambda (grade1 grade2 grade3 grade4 grade5)
(/ (- (+ grade1 grade2 grade3 grade4 grade5)
(min grade1 grade2 grade3 grade4 grade5)
(max grade1 grade2 grade3 grade4 grade5))
3)))
Call
(weighted-average 100 90 90 10 90)
Remember:
Can I reuse names between procedures?
(define sq (lambda (val) (* val val)))
(define dbl (lambda (val) (+ val val)))
(+ (sq 5) (dbl 2)) 29 (sq (dbl 2)) 16
Lessons from the drawings lab
The various procedures make new drawings, rather than modifying an existing drawing.
(define d1 (recolor-drawing "yellow" (scale-drawing 50 drawing-unit-circle))) (drawing-hshift 20 d1) (image-show (drawing->image d1 200 200))
Similar to
(define x 5) (square x) x
drawing-scale scales an image's offset as well as its size.
Primary: [Front Door] [Schedule] - [Academic Honesty] [Disabilities] [Email] - [FAQ] [Teaching & Learning] [Grading] [Rubric] - [Calendar]
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 (2010S)] [Rebelsky (2013F)] [Weinman (2012F)] [Weinman (2014S)]
Misc: [SamR] [Glimmer Labs] [CS@Grinnell] [Grinnell] [Issue Tracker (Course)]
Samuel A. Rebelsky, rebelsky@grinnell.edu
Copyright (c) 2007-2014 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.