Data Structures in Lisp

Slides:



Advertisements
Similar presentations
Whats your favorite color? a pear a green pear.
Advertisements

ANSI Common Lisp 3. Lists 20 June Lists Conses List Functions Trees Sets Stacks Dotted Lists Assoc-lists.
CSE 341, S. Tanimoto Pattern Matching - 1 Pattern Matching in Lisp Lists can be used to represent sentences, relations, tree structures, etc. (this list.
Arrays (1) You create an array in LISP by using the function (make- array ). All elements are initially set to nil. To create a 1-dimensional array of.
CSE S. Tanimoto Explicit Function Application 1 Explicit Application of Functions, Functional Arguments and Explicit Evaluation Implicit and explicit.
Introductory Lisp Programming Lecture # 2 Main Topics –Basic Lisp data types –Lisp primitives –Details of list handling Cons cells (boxes) & their representation.
ANSI Common Lisp 4. Specialized Data Structures 7 June 2003.
Artificial Intelligence and Lisp Lecture 6 LiU Course TDDC65 Autumn Semester, 2010
CSE 341, S. Tanimoto Lisp Data Structures - 1 Data Structures in Lisp 0. Collections of associations, association lists. 1. Creating graphs with conses.
LISP 1.5 and beyond A very quick tour. Data Atoms (symbols) including numbers – All types of numbers including Roman! (well, in the early days) – Syntactically.
Allegro CL Certification Program Lisp Programming Series Level I Session Top Ten Things to Know.
Advanced Functions In CL, functions are often supplied as parameters to other functions –This gives us tremendous flexibility in writing functions whose.
Functional Programming 02 Lists
Functional Programming Here we briefly look at what functional programming is and why we want to study it –a function, in the mathematical sense, is a.
CSE S. Tanimoto Lisp Lisp S-Expressions: ATOMs Every Lisp object is either an ATOM or a CONS Symbols and numbers are kinds of atoms: X, APPLE,
Mitthögskolan 10/8/ Common Lisp LISTS. Mitthögskolan 10/8/2015 2Lists n Lists are one of the fundamental data structures in Lisp. n However, it.
1 Lisp Functions –Built-in functions –Defining functions –Function Evaluation and Special Forms defun, if Control statements –Conditional if, cond –Repetition.
CSE 341, S. Tanimoto Lisp Defining Functions with DEFUN Functions are the primary abstraction mechanism available in Lisp. (Others are structures.
Lisp Files, Arrays, and Macros CIS 479/579 Bruce R. Maxim UM-Dearborn.
Beyond Lists: Other Data Structures Lisp would still be a pretty decent programming language if it only contained atoms and lists –But we can go far beyond.
PRACTICAL COMMON LISP Peter Seibel 1.
Milos Hauskrecht (PDF) Hieu D. Vu (PPT) LISP PROGARMMING LANGUAGE.
CSE S. Tanimoto More-Concepts - 1 More Programming Language Concepts Currying Lazy Evaluation Polymorphism.
Lists CSC 358/ Outline Lab #1 / Homework #1 Lists A question List Internals of Lists List operations Extended Example.
CSE S. Tanimoto Lisps's Basic Functionality 1 LISP: Basic Functionality S-expressions Conses Lists Predicates Evaluation and quoting Conditional.
CSE 341, S. Tanimoto Lisp Explicit Application of Functions and Functional Arguments In Lisp, functions can be passed as arguments to other functions.
Artificial Intelligence and Lisp Lecture 6 LiU Course TDDC65 Autumn Semester,
Appendix I Hashing.
Intelligent Agents Lecture 3-2 October 14th, 1999 CS250 Lecture 2-1
Lisp S-Expressions: ATOMs
Top 50 Data Structures Interview Questions
Example of formula (defun roots (a b c) (list
CSE (c) S. Tanimoto, 2002 AI Techniques
Cse 373 April 24th – Hashing.
Strings: Tries, Suffix Trees
Bin Sort, Radix Sort, Sparse Arrays, and Stack-based Depth-First Search CSE 373, Copyright S. Tanimoto, 2002 Bin Sort, Radix.
J.E. Spragg Mitthögskolan 1997
Imperative Data Structures
Modern Programming Languages Lecture 21 Fakhar Lodhi
CSE 373: Data Structures and Algorithms
CSE 373 Data Structures and Algorithms
CSE 373: Data Structures and Algorithms
Allegro CL Certification Program
Scheme: Basic Functionality
CSE S. Tanimoto Explicit Function Application
CSE 373, Copyright S. Tanimoto, 2002 Hashing -
CSE (c) S. Tanimoto, 2004 AI Techniques
Functional Programming Concepts
Lisp: Using Functions as Data
Bin Sort, Radix Sort, Sparse Arrays, and Stack-based Depth-First Search CSE 373, Copyright S. Tanimoto, 2001 Bin Sort, Radix.
John McCarthy Pioneer in AI Also Lisp Formalize common-sense reasoning
Functional Programming Concepts
Lisp: Representation of Data
Defining Functions with DEFUN
Abstraction and Repetition
Lisp: Using Functions as Data
Strings: Tries, Suffix Trees
Data Structures in Lisp
LISP: Basic Functionality
Data Structures in Lisp
Functional Programming Concepts
LISP: Basic Functionality
Common Lisp II.
Hash Maps Introduction
LISP: Basic Functionality
EECE.3220 Data Structures Instructor: Dr. Michael Geiger Spring 2019
Lisp: Representation of Data
LISP primitives on sequences
Procedures with optional parameters which do not require matching arguments Example: consider the exponent function which may take one argument, m, in.
Introduction to Computer Science
Presentation transcript:

Data Structures in Lisp 0. Collections of associations, association lists. 1. Creating graphs with conses. RPLACA and RPLACD (destructive editing) 2. Adjacency lists. 3. Sequences 4. Arrays 5. Hashtables CSE 341, S. Tanimoto Lisp Data Structures -

Collections of Associations A collection of associations can be thought of as a set, a function, or a many-many mapping. CONS is the fundamental mechanism for association in Lisp. An association list is a list of CONSes. However, for reasons of efficiency, there are alternatives for representing collections of associations in Lisp. CSE 341, S. Tanimoto Lisp Data Structures -

CSE 341, S. Tanimoto Lisp Data Structures - Association Lists Association lists store (functional) binary relations. Lisp functions ACONS and ASSOC help. > (setq fruit-colors nil) NIL > (setq fruit-colors (acons 'apple 'red fruit-colors)) ((APPLE . RED)) > (setq fruit-colors (acons 'pear ’green fruit-colors)) ((PEAR . GREEN)(APPLE . RED)) > (assoc 'apple fruit-colors) (APPLE . RED) > (assoc 'banana fruit-colors) CSE 341, S. Tanimoto Lisp Data Structures -

Direct Manipulation of Conses > (setq x (cons 'a 'b)) (A . B) > (rplaca x 'c) (C . B) > x > (rplacd x 'd) (C . D) > (rplacd x x) (C C C C C C C C C C ... ) > CSE 341, S. Tanimoto Lisp Data Structures -

CSE 341, S. Tanimoto Lisp Data Structures - Adjacency Lists Nowadays, RPLACA and RPLACD are less used. Straight lists are more common. Memory space is less of a concern. (setq nodes '(a b c d)) (setq arc-lists '( (a (b c)) (b (d)) (c (d)) (d ()) ) ) (defun is-edge (x y) (member y (second (assoc x arc-lists))) ) (is-edge 'a 'c) ; => (C) i.e., true. (is-edge 'a 'd) ; => NIL A C B D CSE 341, S. Tanimoto Lisp Data Structures -

CSE 341, S. Tanimoto Lisp Data Structures - Sequences A sequence can be thought of as a mapping from {0, 1, ..., n-1} to a set of range elements. A string is a sequence of characters. A list is a particular form of sequence of lisp objects. (typep "abc" 'sequence) ; => T. (typep '(a b c) 'sequence) ; => T. (concatenate 'string "abc" "def"); => "abcdef" (concatenate 'list '(a b) '(c d)); =>(a b c d) (elt '(a b c d) 2) ;=> C CSE 341, S. Tanimoto Lisp Data Structures -

CSE 341, S. Tanimoto Lisp Data Structures - Arrays An array is a mapping from a set of index tuples to a set of range elements. (setq ages (make-array 4 :initial-contents ’(21 19 20 21) ) ) #(21 19 20 21) (aref ages 2) 20 (setf (aref ages 2) 25) 25 ages #(21 19 25 21) CSE 341, S. Tanimoto Lisp Data Structures -

Multidimensional Arrays (setq a (make-array '(5 10) :initial-element 1)) #2A((1 1 1 1 1 1 1 1 1 1) (1 1 1 1 1 1 1 1 1 1) (1 1 1 1 1 1 1 1 1 1)) (setf (aref a 4 9) 2) 2 (let ((sum 0)) (dotimes (i 5 sum)(dotimes (j 10) (incf sum (aref a i j)) )) ) 51 CSE 341, S. Tanimoto Lisp Data Structures -

CSE 341, S. Tanimoto Lisp Data Structures - Hashtables Association lists are linear and slow. For larger sets of associations, hashtables tend to be much faster. > (let ((h (make-hash-table))) (defun get-h (key) (gethash key h)) (defun put-h (key value) (setf (gethash key h) value)) ) PUT-H > (put-h 'x 'y) Y > (get-h 'x) Y ; The value associated with X T ; True, there is a value. > CSE 341, S. Tanimoto Lisp Data Structures -

CSE 341, S. Tanimoto Lisp Data Structures - MAPHASH ; Changes each entry in THE-HASH-TABLE, ; replacing each positive value with its ; square root, and removing negative values. (maphash ; Steele’84, p285. #'(lambda (key value) (if (minusp value) (remhash key the-hash-table) (setf (gethash key the-hash-table) (sqrt value)))) the-hash-table) ; returns NIL CSE 341, S. Tanimoto Lisp Data Structures -