A Crash Course in LISP MNFIT272 – 2002

A Crash Course in LISP MNFIT272 – 2002

Department of Computer and information Science Norwegian University of Science and Technology http://www.idi.ntnu.no/ A Crash Course in LISP MNFIT272 { 2002 Anders Kofod-Petersen [email protected] 1/14 ? i P 2 3 L2 3M 33 22 Introduction What are the topics for this crash course? 2/14 ? i P 2 3 L2 3M 33 22 Introduction What are the topics for this crash course? Overview • 2/14 ? i P 2 3 L2 3M 33 22 Introduction What are the topics for this crash course? Overview • Symbol manipulation • 2/14 ? i P 2 3 L2 3M 33 22 Introduction What are the topics for this crash course? Overview • Symbol manipulation • LISP • 2/14 ? i P 2 3 L2 3M 33 22 Introduction What are the topics for this crash course? Overview • Symbol manipulation • LISP • { Data 2/14 ? i P 2 3 L2 3M 33 22 Introduction What are the topics for this crash course? Overview • Symbol manipulation • LISP • { Data { Functions 2/14 ? i P 2 3 L2 3M 33 22 Introduction What are the topics for this crash course? Overview • Symbol manipulation • LISP • { Data { Functions { Recursion 2/14 ? i P 2 3 L2 3M 33 22 Introduction What are the topics for this crash course? Overview • Symbol manipulation • LISP • { Data { Functions { Recursion { Assignment 2/14 ? i P 2 3 L2 3M 33 22 Introduction What are the topics for this crash course? Overview • Symbol manipulation • LISP • { Data { Functions { Recursion { Assignment { Functional programming 2/14 ? i P 2 3 L2 3M 33 22 Introduction What are the topics for this crash course? Overview • Symbol manipulation • LISP • { Data { Functions { Recursion { Assignment { Functional programming { Iteration 2/14 ? i P 2 3 L2 3M 33 22 Overview 3/14 ? i P 2 3 L2 3M 33 22 Overview LISP takes its name from List Proccessing, some argue that it comes from Lots • of Irritating Silly Parentheses 3/14 ? i P 2 3 L2 3M 33 22 Overview LISP takes its name from List Proccessing, some argue that it comes from Lots • of Irritating Silly Parentheses LISP has the easiest syntax of all languages • 3/14 ? i P 2 3 L2 3M 33 22 Overview LISP takes its name from List Proccessing, some argue that it comes from Lots • of Irritating Silly Parentheses LISP has the easiest syntax of all languages • LISP is oriented towards the manipulation of symbols • 3/14 ? i P 2 3 L2 3M 33 22 Overview LISP takes its name from List Proccessing, some argue that it comes from Lots • of Irritating Silly Parentheses LISP has the easiest syntax of all languages • LISP is oriented towards the manipulation of symbols • LISP is very flexible in that users can change the syntax of the language if they • don't like it 3/14 ? i P 2 3 L2 3M 33 22 New tools 4/14 ? i P 2 3 L2 3M 33 22 New tools You can do things in LISP that can't be done in \ordinary" programming lan- • guages 4/14 ? i P 2 3 L2 3M 33 22 New tools You can do things in LISP that can't be done in \ordinary" programming lan- • guages To write a function that returns the sum: • 4/14 ? i P 2 3 L2 3M 33 22 New tools You can do things in LISP that can't be done in \ordinary" programming lan- • guages To write a function that returns the sum: • (defun sum (n) (let ((s 0)) (dotimes (i n s) (incf s i)))) 4/14 ? i P 2 3 L2 3M 33 22 New tools You can do things in LISP that can't be done in \ordinary" programming lan- • guages To write a function that returns the sum: • (defun sum (n) int sum(int n) f (let ((s 0)) int i,s=0; (dotimes (i n s) for(1=0;i<n;i++) f (incf s i)))) s+=i; g return(s); g 4/14 ? i P 2 3 L2 3M 33 22 New tools You can do things in LISP that can't be done in \ordinary" programming lan- • guages To write a function that returns the sum: • (defun sum (n) int sum(int n) f (let ((s 0)) int i,s=0; (dotimes (i n s) for(1=0;i<n;i++) f (incf s i)))) s+=i; g return(s); g To write a function that takes a number n and returns a function that adds n n • to its arguments: 4/14 ? i P 2 3 L2 3M 33 22 New tools You can do things in LISP that can't be done in \ordinary" programming lan- • guages To write a function that returns the sum: • (defun sum (n) int sum(int n) f (let ((s 0)) int i,s=0; (dotimes (i n s) for(1=0;i<n;i++) f (incf s i)))) s+=i; g return(s); g To write a function that takes a number n and returns a function that adds n n • to its arguments: (defun addn (n) #'(lambda (x) (+ x n))) 4/14 ? i P 2 3 L2 3M 33 22 New tools You can do things in LISP that can't be done in \ordinary" programming lan- • guages To write a function that returns the sum: • (defun sum (n) int sum(int n) f (let ((s 0)) int i,s=0; (dotimes (i n s) for(1=0;i<n;i++) f (incf s i)))) s+=i; g return(s); g To write a function that takes a number n and returns a function that adds n n • to its arguments: (defun addn (n) Sorry, no can do! #'(lambda (x) (+ x n))) 4/14 ? i P 2 3 L2 3M 33 22 Symbol Manipulation 5/14 ? i P 2 3 L2 3M 33 22 Symbol Manipulation Everything in a computer is a string of bits • 5/14 ? i P 2 3 L2 3M 33 22 Symbol Manipulation Everything in a computer is a string of bits • Bits can be interpreted as a code for word like objects • 5/14 ? i P 2 3 L2 3M 33 22 Symbol Manipulation Everything in a computer is a string of bits • Bits can be interpreted as a code for word like objects • The fundamental things formed from bits in LISP are atoms • 5/14 ? i P 2 3 L2 3M 33 22 Symbol Manipulation Everything in a computer is a string of bits • Bits can be interpreted as a code for word like objects • The fundamental things formed from bits in LISP are atoms • { Examples are: 3.1416, This-is-an-atom, nil 5/14 ? i P 2 3 L2 3M 33 22 Symbol Manipulation Everything in a computer is a string of bits • Bits can be interpreted as a code for word like objects • The fundamental things formed from bits in LISP are atoms • { Examples are: 3.1416, This-is-an-atom, nil Groups of atoms can form sentence like objects called lists • 5/14 ? i P 2 3 L2 3M 33 22 Symbol Manipulation Everything in a computer is a string of bits • Bits can be interpreted as a code for word like objects • The fundamental things formed from bits in LISP are atoms • { Examples are: 3.1416, This-is-an-atom, nil Groups of atoms can form sentence like objects called lists • { Examples are: (1 2 3) (cow horse (hog pig)) 5/14 ? i P 2 3 L2 3M 33 22 Symbol Manipulation Everything in a computer is a string of bits • Bits can be interpreted as a code for word like objects • The fundamental things formed from bits in LISP are atoms • { Examples are: 3.1416, This-is-an-atom, nil Groups of atoms can form sentence like objects called lists • { Examples are: (1 2 3) (cow horse (hog pig)) Atoms and lists are collectively called symbolic expressions • 5/14 ? i P 2 3 L2 3M 33 22 Symbol Manipulation Everything in a computer is a string of bits • Bits can be interpreted as a code for word like objects • The fundamental things formed from bits in LISP are atoms • { Examples are: 3.1416, This-is-an-atom, nil Groups of atoms can form sentence like objects called lists • { Examples are: (1 2 3) (cow horse (hog pig)) Atoms and lists are collectively called symbolic expressions • Programs and data are represented the same way • 5/14 ? i P 2 3 L2 3M 33 22 Symbol Manipulation Everything in a computer is a string of bits • Bits can be interpreted as a code for word like objects • The fundamental things formed from bits in LISP are atoms • { Examples are: 3.1416, This-is-an-atom, nil Groups of atoms can form sentence like objects called lists • { Examples are: (1 2 3) (cow horse (hog pig)) Atoms and lists are collectively called symbolic expressions • Programs and data are represented the same way • { is (+ 10 15) a program or data? 5/14 ? i P 2 3 L2 3M 33 22 LISP Data 6/14 ? i P 2 3 L2 3M 33 22 LISP Data LISP offers all the data types that other languages do • 6/14 ? i P 2 3 L2 3M 33 22 LISP Data LISP offers all the data types that other languages do • \New" data types are: • 6/14 ? i P 2 3 L2 3M 33 22 LISP Data LISP offers all the data types that other languages do • \New" data types are: • { Symbols { 'LISP 6/14 ? i P 2 3 L2 3M 33 22 LISP Data LISP offers all the data types that other languages do • \New" data types are: • { Symbols { 'LISP { Lists { '(LISP has 2 new types) 6/14 ? i P 2 3 L2 3M 33 22 LISP Data LISP offers all the data types that other languages do • \New" data types are: • { Symbols { 'LISP { Lists { '(LISP has 2 new types) You can build lists by list: • 6/14 ? i P 2 3 L2 3M 33 22 LISP Data LISP offers all the data types that other languages do • \New" data types are: • { Symbols { 'LISP { Lists { '(LISP has 2 new types) You can build lists by list: • { (list 'LISP 'has (+ 1 1) 'new ``types'') 6/14 ? i P 2 3 L2 3M 33 22 LISP Data LISP offers all the data types that other languages do • \New" data types are: • { Symbols { 'LISP { Lists { '(LISP has 2 new types) You can build lists by list: • { (list 'LISP 'has (+ 1 1) 'new ``types'') Lists are build by using cons: • 6/14 ? i P 2 3 L2 3M 33 22 LISP Data LISP offers all the data types that other languages do • \New" data types are: • { Symbols { 'LISP { Lists { '(LISP has 2 new types) You can build lists by list: • { (list 'LISP 'has (+ 1 1) 'new ``types'') Lists are build by using cons: • { (cons 'a '(b c d)) -- (a b c d) 6/14 ? i P 2 3 L2 3M 33 22 LISP Data LISP offers all the data types that other languages do • \New" data types are: • { Symbols { 'LISP { Lists { '(LISP has 2 new types) You can build lists by list: • { (list 'LISP 'has (+ 1 1) 'new ``types'') Lists are build by using cons: • { (cons 'a '(b c d)) -- (a b c d) Lists are manipulated by using car and cdr: • 6/14 ? i P 2 3 L2 3M 33 22 LISP Data LISP offers all the data types

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    106 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us