1 / 30

CSE3302 Programming Languages (n-n-n-notes)

CSE3302 Programming Languages (n-n-n-notes). Summer 2003 Dr. Carter Tiernan. Functional Programming. List Processing - LISP Complex interrelationships among data Recursion in conjunction with conditional expressions Primitive list-handling subroutines Applicative language. LISP.

edana
Download Presentation

CSE3302 Programming Languages (n-n-n-notes)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CSE3302Programming Languages(n-n-n-notes) Summer 2003 Dr. Carter Tiernan Programming Languages

  2. Functional Programming • List Processing - LISP • Complex interrelationships among data • Recursion in conjunction with conditional expressions • Primitive list-handling subroutines • Applicative language Programming Languages

  3. LISP • 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 Programming Languages

  4. 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 Programming Languages

  5. 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. Programming Languages

  6. 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 Programming Languages

  7. Constructor • List • Surrounded by parentheses • Separated by blanks • Zero, one or more elements • Can contain lists • () equivalent to nil; called empty or null list Programming Languages

  8. 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 Programming Languages

  9. 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)) = to • (cdr ‘(to be or not)) = (be or not) • (cons ‘to ‘(be or not)) = (to be or not) Programming Languages

  10. 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 Programming Languages

  11. Info Representation • Association lists • ((a1 v1) (a2 v2) … (an vn)) • Handles properties which are flags or properties with multiple values Programming Languages

  12. 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) )) Programming Languages

  13. 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 Programming Languages

  14. 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 Programming Languages

  15. 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 Programming Languages

  16. 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 Programming Languages

  17. LISP on omega • LISP interpreter on both omega and gamma • Invoke by typing ‘lisp’ • Exit by typing ‘(quit)’ • CMU Common Lisp • Info at www.cons.org/cmucl/ Programming Languages

  18. 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 Programming Languages

  19. Functional arguments • Abstracting out pattern • Mapcar • Filter • Reduce • Suppress details • Simplify combination Programming Languages

  20. Recursive Interpreters • Arranged by cases • Atoms • Numeric • Nonnumeric • Quote • Conditional • Functions Programming Languages

  21. Interpreters • Primitive ops performed explicitly • User-defined functions • Evaluate parameters • Bind formals to actuals • Add bindings to environment • Evaluate function in environment Programming Languages

  22. 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 Programming Languages

  23. 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 Programming Languages

  24. Incompatible scope rules • Options • Adopt uniform static scoping • Use default static scoping but allow “special” dynamic scoping Programming Languages

  25. Storage reclamation • Explicit erasure • Work for programmers • Security problems (dangling pointers) • Automatic reclamation • Reference counts • Garbage collection Programming Languages

  26. 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 Programming Languages

  27. 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 Programming Languages

  28. 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 Programming Languages

  29. Garbage Collection • Wreaks havoc on execution time • Non uniform and unpredictable • Approaches to more efficiency include • Continuous garbage collection • Parallel Programming Languages

  30. LISP • AI - represent and manipulate complex interrelationships among symbolic data • Suited to ill-specified problems • Easy to manipulate LISP programs in LISP Programming Languages

More Related