Download presentation
Presentation is loading. Please wait.
Published byJulia Campbell Modified over 9 years ago
1
242-203 Comp. Eng. SW Lab II: FP with Scheme 1 Computer Eng. Software Lab II 242-203, Semester 2, 2014-2015 Who I am: Andrew Davison CoE, WiG Lab Office ad@fivedots.coe.psu.ac.th Functional Programming with Scheme Please ask questions
2
242-203 Comp. Eng. SW Lab II: FP with Scheme 2 Overview 1. Why Scheme? 2. Constants (names) 3. Functions 4. Lists 5. No-name Functions: lambda 6. cond 7. Recursion continued
3
242-203 Comp. Eng. SW Lab II: FP with Scheme 3 8. Higher Order Functions 9. Using DrScheme 10. More Information
4
242-203 Comp. Eng. SW Lab II: FP with Scheme 4 1. Why Scheme? Scheme is one of the simpler functional programming languages – –a Scheme program is a collection of functions Scheme also has assignment for greater programming flexibility – –but it is not needed in most programs continued
5
242-203 Comp. Eng. SW Lab II: FP with Scheme 5 Scheme has plenty of advanced features – –e.g. first-class functions function body code can be manipulated as data data can be used as function body code Scheme is used in lots of Artficial Intelligence (AI) projects and textbooks.
6
242-203 Comp. Eng. SW Lab II: FP with Scheme 6 2. Constants (names) myPi is evaluated then printed 'myPi is not evaluated More details on how to use DrScheme are given in Section 9. myPi is defined here 'pi is pre-defined
7
242-203 Comp. Eng. SW Lab II: FP with Scheme 7 3. Functions A function call is written as: (operator arg 1 arg 2 … arg n ) For example: (+ 2 3)means2 + 3
8
242-203 Comp. Eng. SW Lab II: FP with Scheme 8 Function Call Examples The + operator (and other arithmetic) operators can take any number of arguments. The same as: (2+3)*(1+2)
9
242-203 Comp. Eng. SW Lab II: FP with Scheme 9 Test Functions (Predicates) Test functions return boolean values true or false. Their names end with a '?' – –e.g. number? char?
10
242-203 Comp. Eng. SW Lab II: FP with Scheme 10 Defining Functions (v.1) Similar C code is: int sq(int x) { return x*x; }
11
242-203 Comp. Eng. SW Lab II: FP with Scheme 11 Similar C code is: int myMax(int x,int y) { if (x > y) return x; else return y; }
12
242-203 Comp. Eng. SW Lab II: FP with Scheme 12 Combining Functions Scheme functions can be easily combined together – –make a function call be the argument of another function function call arguments
13
242-203 Comp. Eng. SW Lab II: FP with Scheme 13 4. Lists List values are placed inside (list …): – –(list )// an empty list – –(list 1 2 3)// a list of numbers – –(list 'a 'b 'c)// a list of names – –(list (list 1 2) (list 2 3 4)) // a list of two lists If the language includes list abbreviations, then (list...) can be written as '(...) – –'(1 2 3) is the same as (list 1 2 3)
14
242-203 Comp. Eng. SW Lab II: FP with Scheme 14 Basic List Operations (null? x) – –returns true is x is an empty list; otherwise returns false (car x) – –returns the first element (head) of a non-empty list x (cdr x) – –returns the tail of a non-empty list x everything except the first element continued
15
242-203 Comp. Eng. SW Lab II: FP with Scheme 15 (cadr x) – –returns the head element of the tail of x (cons h l) – –makes a new list where the head is h, the tail is l (list arg1 arg2 … argn) – –places all of its arguments into a new list
16
242-203 Comp. Eng. SW Lab II: FP with Scheme 16 List Operation Examples
17
242-203 Comp. Eng. SW Lab II: FP with Scheme 17 plusList plusList pulls out the first two arguments of a list and adds them
18
242-203 Comp. Eng. SW Lab II: FP with Scheme 18 Some Other Useful List Functions (length x) – –returns the length of a list x (append x y) – –makes a new list by appending list x onto the front of list y (reverse x) – –makes a list by reversing the list x and many, many more... continued
19
242-203 Comp. Eng. SW Lab II: FP with Scheme 19 combining reverse and append
20
242-203 Comp. Eng. SW Lab II: FP with Scheme 20 5. No-name Functions: lambda Similar to the C-like code: int ??(int x) { return x *x; } Similar to a C-like function call: ??(3) The language 'level' must be increased for lambda to be supported.
21
242-203 Comp. Eng. SW Lab II: FP with Scheme 21 Defining Functions (v.2) Similar to the C-like code: sq2 = int ??(int x) { return x * x; }
22
242-203 Comp. Eng. SW Lab II: FP with Scheme 22 Why have lambda? For simple examples (like ours), there is no need for lambda. lambda becomes very useful in higher order programming, where data and functions need to be translated into each other – –e.g. parsing, AI
23
242-203 Comp. Eng. SW Lab II: FP with Scheme 23 6. cond: the multi-branch if Similar to the C code: int sizer(int x) { if (x == 0) return 0; else if (x > 0) return 1; else return -1; }
24
242-203 Comp. Eng. SW Lab II: FP with Scheme 24 7. Recursion Base case: – –the function returns an answer and stops Recursion step: – –the body of the function calls itself (with smaller arguments)
25
242-203 Comp. Eng. SW Lab II: FP with Scheme 25 length Defined recursive step base case
26
242-203 Comp. Eng. SW Lab II: FP with Scheme 26 33 append Defined
27
242-203 Comp. Eng. SW Lab II: FP with Scheme 27 member Defined mem? is a predicate (a test function) mem is the wrong name
28
242-203 Comp. Eng. SW Lab II: FP with Scheme 28 8. Higher Order Functions A higher order function has 1 or more arguments which are function names – –higher order functions are also called functionals Higher order functions are very important to advanced functional programming and AI. An ‘Intermediate Student’ feature
29
242-203 Comp. Eng. SW Lab II: FP with Scheme 29 apply (apply f x) – –its first argument, f, is a function name – –its second argument, x, is the input for f – –same as executing (f x)
30
242-203 Comp. Eng. SW Lab II: FP with Scheme 30
31
242-203 Comp. Eng. SW Lab II: FP with Scheme 31 map (map f x) – –returns a list by applying the function f to each element of the list x
32
242-203 Comp. Eng. SW Lab II: FP with Scheme 32 map and plusList plusList is applied to the 4 lists in the input list.
33
242-203 Comp. Eng. SW Lab II: FP with Scheme 33 9. Using DrScheme Download the installation program for DrScheme from: http://fivedots.coe.psu.ac.th/ Software.coe/LAB/FuncProg/ The filename: plt-4.1.4-bin-i386-win32.exe Installs on Windows XP or later – –the installation is called PLT Scheme, v4.1.4
34
242-203 Comp. Eng. SW Lab II: FP with Scheme 34 Start DrScheme from the Windows Start menu item PLT Scheme: definitions go here execute functions here
35
242-203 Comp. Eng. SW Lab II: FP with Scheme 35 Some Notes Set the language mode to “Beginning Student with List Abbreviations” – –under the Language > Choose Language menu item continued
36
242-203 Comp. Eng. SW Lab II: FP with Scheme 36 Press the "Run" button after adding a new function to the definitions window – –this makes the new function visible down in the execution window
37
242-203 Comp. Eng. SW Lab II: FP with Scheme 37 Create a Scheme Program using any text editor
38
242-203 Comp. Eng. SW Lab II: FP with Scheme 38 Load myMax.scm use the File/Open menu item Press the "Run" button for the execution window to appear at the bottom.
39
242-203 Comp. Eng. SW Lab II: FP with Scheme 39 Use the myMax Function
40
242-203 Comp. Eng. SW Lab II: FP with Scheme 40 Alternatively, you can type the function into DrScheme's definition window, and save it from there. – –you get colour-coded syntax, indenting (tabbing), and error checking as you type
41
242-203 Comp. Eng. SW Lab II: FP with Scheme 41 10. More Information The "Help/ Help Desk" menu item:
42
242-203 Comp. Eng. SW Lab II: FP with Scheme 42 PLT Scheme Racket PLT Scheme v.5 was renamed to be called Racket PLT Scheme v.5 was renamed to be called Racket –two websites: http://plt-scheme.org/(frozen in 2010) http://plt-scheme.org/(frozen in 2010) http://racket-lang.org/(active) http://racket-lang.org/(active) At the beginner's level (i.e. for us), there's no difference between the two languages. At the beginner's level (i.e. for us), there's no difference between the two languages.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.