Download presentation
Presentation is loading. Please wait.
1
Lisp Recitation (cse471/598 Fall 2007 ) Aravind Kalavagattu
2
Outline: Setting up the environment LISP-in-a-box LISP Datatypes Expressions Functions Conditionals Looping Others CSE 471.. LISP
3
Functional Programming Function is the basic element. Both data and function are treat as object. The parameter could be a function. Basic rule: the parameters of a function should not be changed. (But there are some exceptions like sort, incf, decf)
4
An example LISP program! LISP in a box! (defun helloworld() (format t “hello world”))
5
Expression Evaluation You type an expression, the interpreter responds by displaying the results of the evaluation of that expression. Ex. >486 The interpreter will respond 486 Prefix Notation The leftmost element in the list is the operator and the other elements are operands. >(+ 137 349) 486 Compound expressions are formed by combining other expressions. >(/ (- 7 1) (- 4 2)) 3 ** The way we call functions also is a ‘ Prefix notation ’ with function name followed by the arguments.
6
Data Atoms Numbers >1 >334 Symbols a Horse Variables, Arrays, Vectors, Structures (make-array ‘(2 3)) (aref ) (defstruct employee age first-name last-name sex children) EMPLOYEE Lists (1 2 3) (7 a horse) QUOTE operator Takes a single argument, and returns it verbatim > (quote (+ 3 5)) (+ 3 5)
7
Data Structure - Lists Using Quote:- ‘(1 2 3) also (quote ( 1 2 3)) (1 2 3) Using CAR:- (CAR ‘( 1 2 3 4)) 1 Using CDR:- (CDR ‘( 1 2 3)) ( 2 3) - cadr, cadddr, nthcdr !
8
Using ‘ list ’ : (list 'a '(a s d f)) List takes all its arguments and makes a list with them as elements Using Cons :- (cons 0 ‘ (1 2 3)) adds the element 0 to the head of the list (1 2 3) (0 1 2 3) Using Append : – (append ‘ (1 2) ‘ (3 4 5)) Creates a new list out of existing lists (1 2 3 4 5) List can also be interpreted as sets, hashtables, trees, sequences, stacks, association-lists.
9
Variables Assignment (setf x (list ‘a ‘b ‘c)) (A B C) (setf (car x) ‘n) N (setf a 1 b 2 c 3) { a=1; b=2; c=3}
10
Variables Local: (let ( ( ) ( ) … ( ) ) ( ) ) Example: (let ((a 1) (b 3)) (+ 33 a b)) >> 37 Global: (defparameter *pi* 3.14) (defconstant +limit+ 100)
11
Function (defun ( ) ) Example: (defun square (x) (* x x)) SQUARE > (square 2) 4 > (square 1.4142158) 2.0000063289696399 Symbolp, listp Truth and False values (null nil) true
12
Conditionals Comparisons: >=, <=, eql, eq If (if ) Ex: (defun absdiff (x y) (if (> x y) (- x y) (- y x) )) Cond (like “switch” in C/C++) (cond (A B) (C D) (t E)) (t E) is the ‘default’ equivalent Example: (defun absdiff (x y) (cond ((> x y) (- x y)) (t (- y x)))) ** Others: when, until, always
13
Looping (dolist ( ) ) (dotimes ( ) ) Examples: (defun num-sublists-i (lis) (let ((result 0)) (dolist (next lis result) (if (listp next) (setf result (1+ result)))))) (defun power-i (x y) (let ((result 1)) (dotimes (count y result) (setf result (* x result)))))
14
RECURSION Compute factorial: (defun factorial (n) (if (= n 0) 1 (* n ( factorial (- n 1) ) ) ) )
15
Input and Output > (progn (format t “Please enter your name: ”) (read-line)) > (prin1 “hello”) Note: There are many variants.
16
(defun f-to-c (ftemp) (let ((ctemp (* (- ftemp 32) 5/9))) (format t "~%~s degrees Fahrenheit is ~%~s degrees Celsius~%" ftemp ;; first ~s (float ctemp)) ;; second ~s ctemp)) ;; return ratio value - ;; Commenting
17
Other Imp. LISP stuff Mapcar The MAPCAR form is an "iterator" that applies a function repeatedly, to each element of a list and returns a list of the results. For example: > (MAPCAR 'ATOM '(DOG (CAT HORSE) FISH)) (T NIL T) Apply Apply takes its first argument and applies it as a function to the list of items making up the last. For example: >(apply '* '(1 2 3 4)) 24 Lambda You can think of a lambda expression as an anonymous function. > (setf product '(lambda (x y) (* x y))) (LAMBDA (X Y) (* X Y)) > product (LAMBDA (X Y) (* X Y)) > (apply product '(3 4)) 12
18
Loading a lisp file into lisp-in-a-box (windows) ( load “ ”) The filename is the path with “\” escaped Example: (load "C:\\Documents and Settings\\Aravind\\Desktop\\code.lisp")
19
Suggested programming style Write short functions, where each function provides a single, well-defined operation Use proper indentation Program idea with recursion Top-down approach with abstraction
20
Useful commands for lisp-in-a-box / emacs Ctrl-c Ctrl-d; Ask for the description Alt-p; Run through the history Ctrl-c Ctrl-q; complete all the parenthesis Ctrl-c Ctrl-z; Return to the interpreter Ctrl-c Ctrl-c; Compile a function Ctrl-c Ctrl-k; Compile and load a file Other basic commands for emacs
21
How to deal with problems TA We can discuss one-on-one during my office hours! Where you can ask: 1. Newsgroup: comp.lang.lisp 2. Search Google. 3. Check the documentation of specified functions. 4. Discuss with each other
22
CSE 471.. What kind of projects (LISP)? Partial code is given many times Understand its working and extend for tasks in the project Project 0? Finish a good full tutorial on LISP and start the project LISP Primer Common Lisp tutorials Use LISP references whenever needed
23
“ Lisp is a language for smart people. ” Have Fun with Lisp Questions?
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.