* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download Lecture slides for Chapter 9
Survey
Document related concepts
Lisp (programming language) wikipedia , lookup
Stream processing wikipedia , lookup
Go (programming language) wikipedia , lookup
Recursion (computer science) wikipedia , lookup
Logic programming wikipedia , lookup
Falcon (programming language) wikipedia , lookup
Abstraction (computer science) wikipedia , lookup
Control flow wikipedia , lookup
Corecursion wikipedia , lookup
C Sharp (programming language) wikipedia , lookup
Object-oriented programming wikipedia , lookup
Programming language wikipedia , lookup
Functional programming wikipedia , lookup
Transcript
CSE3302 Programming Languages (n-n-n-notes) Summer 2003 Dr. Carter Tiernan CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 1 jcmt Functional Programming • List Processing - LISP • Complex interrelationships among data • Recursion in conjunction with conditional expressions • Primitive list-handling subroutines • Applicative language CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 2 jcmt LISP • John McCarthy • Function applications – Prefix (Polish) notation : flexibility – Fully parenthesized : no precedence rules • Symbolic data – Lists of symbols called atoms – List is ONLY data structure in LISP CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 3 jcmt Lists • S-expressions – Function applications are evaluated – Quoted lists are treated as data • Programs and data represented the same way – Convenient for one program to generate and call for execution of another – Simple to write program manipulators CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 4 jcmt LISP Execution • Usually interpreted and often interactive • Functions – Pure : compute a value only • eq, plus, difference, etc. – Pseudo : have side effects on computer state • set, defun, etc. CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 5 jcmt Data Structures • Constructor : list • Primitives : atoms – Numeric (integer and floating point) • Many ops provided: arithmetic, increment, decrement, max, min, relational, predicates – Nonnumeric character strings • Limited ops: comparisons for equality • nil (false, empty set) • null is the test op CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 6 jcmt Constructor • List – – – – – CSE 3302 Surrounded by parentheses Separated by blanks Zero, one or more elements Can contain lists () equivalent to nil; called empty or null list CSE@UTA Programming Languages Ch. 9 - 11 7 jcmt Accessing Parts of a List • Car – Selects the first element of a list • Cdr – Returns all of a list except its first element • Car and Cdr are selectors • Car and Cdr can be combined to access interior parts of a list: ex. caadr CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 8 jcmt Building a list • Cons – Creates a list from a first element and a list – Is the inverse of car and cdr – Example: • (car ‘(to be or not)) • (cdr ‘(to be or not)) • (cons ‘to ‘(be or not)) CSE 3302 CSE@UTA = to = (be or not) = (to be or not) Programming Languages Ch. 9 - 11 9 jcmt Info Representation • Property lists – (p1 v1 p2 v2 … pn vn) where pn is the nth property and vn is the value of that property – P-lists give flexibility – Easy to define a function to get properties CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 10 jcmt Info Representation • Association lists – ((a1 v1) (a2 v2) … (an vn)) – Handles properties which are flags or properties with multiple values CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 11 jcmt Recursive list construction • Append two lists together – Identify simplest cases • (append ‘() L) = L • (append L ‘()) = L – Reduce other cases to the simplest cases • (append L M) = (cons (car L) (append (cdr L) M) – (defun append (L M) (if (null L)) M (cons (car L) (append (cdr L) M) )) CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 12 jcmt Atoms • Created by mentioning them • Have properties and relations (p-list) – Print name / pname – putprop adds a property to an atom – apval denotes the binding of an atom to a value – set binds an atom – symbol-plist shows property list of an atom CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 13 jcmt List representation • Linked list • Cells in the list have a right and a left – Right part points to next cell in list – Left part points to value of the cell • Data and programs both represented the same way – Program linked list called an expression tree CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 14 jcmt List Primitives • Efficient – – – – Car returns a left part Cdr returns a right part Cons requires storage allocation for new cell Car, Cdr, and Cons do not change values • Sublists can be shared • Pseudo-functions alter lists – rplaca, rplacd – Have same drawbacks as aliasing CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 15 jcmt Conditional expression • Cond – Mimics mathematical notation – Logical ops are defined in terms of the conditional • And & Or – Operands are evaluated sequentially – Conditional interpretation vs. strict CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 16 jcmt Iteration • Performed by recursion • Reduction – Perform some op on every element of a list – Uses a binary function to reduce a list to a single value • Mapping – Apply a function to every element of a list – Returns a list of the results • Filtering – Forms a sublist containing all elements that satisfy some property CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 17 jcmt Functional arguments • Abstracting out pattern • Mapcar • Filter • Reduce • Suppress details • Simplify combination CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 18 jcmt Recursive Interpreters • Arranged by cases – Atoms • Numeric • Nonnumeric – Quote – Conditional – Functions CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 19 jcmt Interpreters • Primitive ops performed explicitly • User-defined functions – – – – CSE 3302 Evaluate parameters Bind formals to actuals Add bindings to environment Evaluate function in environment CSE@UTA Programming Languages Ch. 9 - 11 20 jcmt Environment of evaluation • Arguments going to (apply f x a) (p.380) – f the function - lambda expression – x the parameters - bound formals – a the environment - existing environment with the addition of the bound formals • Universal function CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 21 jcmt Static scoping • Closure to indicate environment of definition - function keyword – Instruction part (ip) - program, lambda expr. – Environment part (ep) - definition environment • (closure ip ep) • User-defined functions can be – Dynamically scoped lambda expressions – Statically scoped function closures CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 22 jcmt Incompatible scope rules • Options – Adopt uniform static scoping – Use default static scoping but allow “special” dynamic scoping CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 23 jcmt Storage reclamation • Explicit erasure – Work for programmers – Security problems (dangling pointers) • Automatic reclamation – Reference counts – Garbage collection CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 24 jcmt Reference counts • Accessible cells are referenced • Reference count keeps track of how many other cells reference the current one • Count must be incremented and decremented correctly • Cells with zero count are added to the free list CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 25 jcmt Reference counts • Cycles defeat reference counts – Cyclic reference boosts the count of each member plus one member has an outside reference. – If outside reference goes away, cycle still has references internally but no access from anywhere else in program – Allowing cycles is an open issue CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 26 jcmt Garbage Collection • When storage becomes low, system starts up garbage collection • Mark and sweep process – Starting at roots mark all cells that can be reached recursively moving from each cell to its children – When all are marked, sweep through memory from top, free unmarked cells and reset flags on marked cells CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 27 jcmt Garbage Collection • Wreaks havoc on execution time • Non uniform and unpredictable • Approaches to more efficiency include – Continuous garbage collection – Parallel CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 28 jcmt LISP • AI - represent and manipulate complex interrelationships among symbolic data • Suited to ill-specified problems • Easy to manipulate LISP programs in LISP CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 29 jcmt