Symbolic Expressions (S Expressions) Syntax: Opening and Closing parenthesis having elements in between. List represented in LISP: (A B2 C3 Shahid) (A B (C D E) F G) LISP
Internal Representation A B2C3Shahid A B C D E FG nil
Functional Programming Defining Functions: Syntax: ( defun{Function Name} ( {parameters} {procedure or body of the function} ) Setting Values to variables: (setq A 2) or (set ‘A 2)
Arithmetic Operations (+ A B) means A+B (* 7 7) means 7*7=49 (- C D) means C-D (- (+10 20) 7) means ((10+20)- 7 = 23
Tree Diagram for Evaluation ( + (* 10 20) (* 2 3)) + (* 10 20) * (* 2 3) *
Built In Commands Quote: returns the list as it is. –(quote(a b c)) or use ‘ instead of quote. –Returns (a b c) List: load the argument as a list –(list( )) –Returns ( ) Eval: evaluates the list or quoted list. –(eval ( quote (+ 2 3))) –Returns 5 –( quote (+ 2 3)) –Returns (+2 3) Nth n: returns the nth value of the list –(nth 0 ( )) returns 1 –(nth 3 ( )) returns 4 –(nth 5 ( )) returns 6
Examples (= (+ 5 1 ) 6 ) returns t ( > (* 5 6) (+ 4 5)) returns t Other List Operators (length ‘( )) returns 4 (member 8 ‘( )) returns t and if not present then returns nil (null ()) returns t
Assignments Statements (setq a=0) returns 0 (let ((a 3) b); local assignment (setq b 4);if you go outside let a goes to 0 (+ a b)) 7 a 0 b error b not bounded at the top level
Sample Programme Programme to add three numbers: ( defun ADDNUMBERS (num1 num2 num3) (setq sum 0); initialise the sum to zero (setq sum ( + sum num1); add first number (setq sum ( + sum num2)); (setq sum ( + sum num3)) );
Conditionals Command ‘cond’ Syntax: ( cond ( ) ( ) ( ) )
Example ( defun absolute_values(x) (cond ( ( < x 0) (-x)); (t x))) This programme returns the value of x as it is if x>0 otherwise returns -x
List Manipulation Command ‘cons’ (cons ‘a ‘(b c)) returns (a b c) Command ‘append’ does the same operation as cons Command ‘car’ Returns the first element of the list Command ‘cdr’ Returns the list excluding the first element
Examples (cdr ‘((a b) (c d))) –returns ((c d)) (car (cdr (car list1))) ca d ar (cadar x) (car (car(x))(caar x) (car(car(car x)))(caaar x) (cdr(car(cdr x)))(cdadr x)
Recursion Write a programme that finds the factorial of a number Syntax: (defun factorial(x) (recursive call))? recursive call: (* x ( factorial ( - x 1) ) )