Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CSE240 (online) Lecture 12

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

CSE240 (online) Lecture 12

Introduction to Programming Languages
Programming with LISP
(201805)

More Decks by Javier Gonzalez-Sanchez

Other Decks in Programming

Transcript

  1. CSE240 – Introduction to Programming Languages (online) Lecture 12: Programming

    with LISP Javier Gonzalez-Sanchez [email protected] javiergs.engineering.asu.edu Office Hours: By appointment
  2. Javier Gonzalez-Sanchez | CSE 240 (online) | Fall 2017 |

    2 Functional Programming • Language: we will use LISP (LISt Processing). • It uses an interpreter. • Automatic management of memory. • More abstract than Imperative and Object-Oriented: no data types and a simpler syntax.
  3. Javier Gonzalez-Sanchez | CSE 240 (online) | Fall 2017 |

    3 You need an Interpreter • LispWork Personal Edition – http://www.lispworks.com/downloads/index.html • Compile Lisp Online – http://rextester.com/l/common_lisp_online_compiler • Steel Bank Common Lisp – http://www.sbcl.org/platform-table.html
  4. Javier Gonzalez-Sanchez | CSE 240 (online) | Fall 2017 |

    4 Functional Programming • A program is a set of lists and they are enclosed with parenthesis. • We use lists to represent functions; in a function the first element of the list is the id of the function and the rest are parameter(s) • Whitespace separate function id and parameters • Examples: ( print "Hello World" ) ( + 2 2 ) ( sqrt 2 )
  5. Javier Gonzalez-Sanchez | CSE 240 (online) | Fall 2017 |

    5 Everything is a List • Uniform representation of instructions and data using a single general format– a list. (functionId param1 param2 param3 ...) • (+ 3 2 7 9) ; add 3+2+7+9 and return the result 21 • (* 4 2.3) ; multiply 4 by 2.3 and return the result 9.2 • (subseq "Hello, World" 2 9) "llo, Wo"
  6. Javier Gonzalez-Sanchez | CSE 240 (online) | Fall 2017 |

    7 Everything is a List • A function ID (symbol) is a series of characters other than whitespace, parentheses ( ), pound ( # ), quote ( ' ), double-quote ( " ), period ( . ), or back quote ( ` ). • A function ID (symbol) may not take the form of numbers. • It's very common for symbols to have hyphens ( - ) or asterisks ( * ) in them. • There are NOT operators! only functions • Symbols (function ID) are case-INSENSITIVE.
  7. Javier Gonzalez-Sanchez | CSE 240 (online) | Fall 2017 |

    8 Atomic Expressions • -3 • 2.43 • 123342303923412323411323234012923492341231230234923410239234412 • #C(3.2 2) ; the complex number 3.2 + 2i • 2/3 ; the fraction 2/3. It is NOT divide 2 by 3 • -3.2e25 ; the number -3.2 x 10^25 • #\g ; characters starts with #\ • #\{ • #\\ ; the character '\' • #\tab
 • #\newline • 
#\space
 • #\backspace
 • #\escape
  8. Javier Gonzalez-Sanchez | CSE 240 (online) | Fall 2017 |

    9 Atomic Expressions • "Hello, World!" • "It's a glorious day." • "He said \"No Way!\" and then he left." • "I think I need a backslash here: \\ Ah, that was better." • t ; true • nil ; false
  9. Javier Gonzalez-Sanchez | CSE 240 (online) | Fall 2017 |

    10 Everything is a List • (+ 27/32 32/57) 2563/1824 • (* 2.342 3.2e4) 74944.0 • (* 2.342 9.212 -9.23 3/4) ; You can mix number types -149.34949 • (/ 3 5) ; The return type stays as general as possible 3/5 • (/ 3.0 5) ;Here LISP had no choice: convert to a float 0.6 • (1+ 3) 4
  10. Javier Gonzalez-Sanchez | CSE 240 (online) | Fall 2017 |

    11 Everything is a List • (string-upcase "How about that!") "HOW ABOUT THAT!" • (reverse "Four score and seven years ago") "oga sraey neves dna erocs ruoF" • (length "Four score and seven years ago") 30 • (sqrt 2) 1.4142135 • (sqrt -1.0) #C(0 1.0) • (SqRt -1.0) ;LISP symbols are case-insensitive #C(0 1.0)
  11. Javier Gonzalez-Sanchez | CSE 240 (online) | Fall 2017 |

    12 Function Arguments • Some functions have NOT a fixed number of arguments: (+ 100 231 201 921 221 231 -23 12 -34 134) • Some functions have a fixed number of arguments and optional arguments: (subseq "Four score and seven years ago" 9) "e and seven years ago” (subseq "Four score and seven years ago" 9 23) "e and seven ye"
  12. Javier Gonzalez-Sanchez | CSE 240 (online) | Fall 2017 |

    13 Predicates (boolean functions) • LISP has a special name for functions which return "true" (usually t) or "false" (nil). These functions are called predicates. • (= 4 3) ; is 4 == 3 ? NIL • (< 3 9) ; is 3 < 9 ? T • (numberp "hello") ; is "foo" a number? NIL • (oddp 9) ; is 9 an odd number? T
  13. Javier Gonzalez-Sanchez | CSE 240 (online) | Fall 2017 |

    14 Errors • Errors stop the program execution • (/ 1 0) *** - division by zero • (blah-blah-blah 1 0 "foo") *** - EVAL: the function BLAH-BLAH-BLAH is undefined
  14. Javier Gonzalez-Sanchez | CSE 240 (online) | Fall 2017 |

    15 Recursion • When a list contains another list among its expressions, the evaluation procedure is recursive. • (+ 33 (* 2.3 4) 9) 51.2 • (+ (length "Hello World") 44) 55 • (* (+ 3 2.3) (/ 3 (- 9 4))) ;in C++: (3+2.3) * (3 / (9-4)) 3.1800003 • (log (log (log 234231232234234123))) 1.3052895 • (+ (* (sin 0.3) (sin 0.3)) ; expressions may use multiple lines (* (cos 0.3) (cos 0.3))) ; sin(0.3)^2 + cos(0.3)^2 1.0000001 ; = 1. Rounding inaccuracy
  15. Javier Gonzalez-Sanchez | CSE 240 (online) | Fall 2017 |

    16 Recursion • (and (< 3 (* 2 5)) (not (>= 2 6))) ; (3 < 2 * 5) && !(2 >= 6) T • (print (+ 2 3 4 1)) 10 10 • (+ (* 2 3) (/ 3 2) 9) 33/2
  16. CSE240 – Introduction to Programming Languages (online) Javier Gonzalez-Sanchez [email protected]

    Fall 2017 Disclaimer. These slides can only be used as study material for the class CSE240 at ASU. They cannot be distributed or used for another purpose.