CSE (c) S. Tanimoto, 2002 Introducing Lisp

Slides:



Advertisements
Similar presentations
C-LISP. LISP 2 Lisp was invented by John McCarthy in 1958 while he was at the Massachusetts Institute of Technology (MIT).John McCarthyMassachusetts Institute.
Advertisements

1 Scheme and Functional Programming Aaron Bloomfield CS 415 Fall 2005.
Copyright © 1998 by Addison Wesley Longman, Inc. 1 Chapter One Preliminaries, including –Why study PL concepts? –Programming domains –PL evaluation criteria.
Peter Seibel Practical Common Lisp Peter Seibel
Introduction to Artificial Intelligence Lisp Ruth Bergman Fall 2002.
Introduction CSC 358/458 3/27/2006. Outline Introductions Course goals Course organization History of Lisp Lisp syntax Examples Lisp IDE.
ISBN Chapter 1 Preliminaries. Copyright © 2004 Pearson Addison-Wesley. All rights reserved.1-2 Chapter 1 Topics Motivation Programming Domains.
CSE S. Tanimoto Explicit Function Application 1 Explicit Application of Functions, Functional Arguments and Explicit Evaluation Implicit and explicit.
Common Lisp Derek Debruin Mark Larue Vinh Doan. Problem Domains There was a need in the early 1960s to define a programming language whose computational.
Common Lisp! John Paxton Montana State University Summer 2003.
ISBN Chapter 1 Topics Motivation Programming Domains Language Evaluation Criteria Influences on Language Design Language Categories Language.
CSE S. Tanimoto Introduction 1 LISP Lisp is worth learning for the profound enlightenment experience you will have when you finally get it; that.
1 Lisp and Functional Languages Functional forms Referential transparency Function construction Function composition Mapping functions Designing functional.
Presentation topic : LISP Amir Shahzad MCS 3 MCC
CSE 425: Intro to Programming Languages and their Design A Few Key Ideas No particular language is a prerequisite for this course –However you should be.
PZ01A Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ01A -- Introduction Programming Language Design and.
CS 363 Comparative Programming Languages
COMPUTER PROGRAMMING I SUMMER 2011 Programming Languages.
LISP – Not just a Speech Impediment Jim Lowe. Brief History of LISP Initial development begins at the Dartmouth Summer Research Project in 1956 by Dr.
Copyright © 2007 Addison-Wesley. All rights reserved.1-1 Reasons for Studying Concepts of Programming Languages Increased ability to express ideas Improved.
CS 326 Programming Languages, Concepts and Implementation Instructor: Mircea Nicolescu Lecture 5.
Programming Language 1. Programming language A programming language is a machine-readable artificial language designed to express computations that can.
CSE (c) S. Tanimoto, 2002 AI Techniques 1 Where and When Do Symbols Refer to Values and Functions? Scope and Extent of Bindings Bindings Scope Extent.
CS 105: LISP GRG 424 MW 1:00-2:00pm About Me Jacob Schrum: call me Jacob BS in Computer Science, Math and German at Southwestern University Currently.
CS 331 Lisp/Scheme 1 Lisp/Scheme Ruth Rutter Functional and Logic Programming Team P-Phunck.
Scheme Profs Tim Sheard and Andrew Black CS 311 Computational Structures.
Milos Hauskrecht (PDF) Hieu D. Vu (PPT) LISP PROGARMMING LANGUAGE.
CSE S. Tanimoto More-Concepts - 1 More Programming Language Concepts Currying Lazy Evaluation Polymorphism.
Programming Languages
Lisp "List Processing". Lisp history John McCarthy developed the basics behind Lisp during the 1956 Dartmouth Summer Research Project on Artificial Intelligence.
CSE 341, S. Tanimoto Lisp LISP LISP = LISt Processing Intended for processing symbolic information Implementations from noncommercial sites: GNU.
CSE 341, S. Tanimoto Lisp Explicit Application of Functions and Functional Arguments In Lisp, functions can be passed as arguments to other functions.
LISP LISt Processing. History & Overview b b One of the oldest high level programming languages. b b First developed in 1958 by John McCarthy. b b Later.
Programming Language History and Evolution
Functional Programming
Zuse’s Plankalkül – 1945 Never implemented Problems Zuse Solved
Why study programming languages?
PROGRAMMING LANGUAGES
CS 326 Programming Languages, Concepts and Implementation
LISP LISt Processing.
CSE S. Tanimoto Introduction
Programming Language History and Evolution
Programming Languages
Chapter 1 Preliminary. Chapter 1 Preliminary 1.1 Reasons for Studying Concepts of Programming Languages Increased capacity to express ideas Improved.
CSE 341 Programming Languages Autumn 2001
CSE 341 Programming Languages Autumn 2003
LISP LISP = LISt Processing
CSE 341 Programming Languages Autumn 2002
Bindings, Scope, and Extent
CSE S. Tanimoto Introduction
CSE S. Tanimoto Explicit Function Application
CSE S. Tanimoto Introduction
Explicit Application of Procedures, and Explicit Evaluation
Functional Programming Concepts
Lisp: Using Functions as Data
CSE 341 Programming Languages Spring 2003
CSE S. Tanimoto Introduction
CSE S. Tanimoto Introduction
Functional Programming Concepts
Defining Macros in Lisp
CSE 341 Programming Languages Autumn 2003
LISP LISt Processing.
Lisp: Using Functions as Data
Bindings, Scope, and Extent
LISP LISt Processing.
Modern Programming Languages Lecture 18 Fakhar Lodhi
Functional Programming Concepts
Bindings, Scope, and Extent
A Programming Language for
CS 462: Introduction to Artificial Intelligence
Presentation transcript:

CSE 415 -- (c) S. Tanimoto, 2002 Introducing Lisp Introducing Lisp The dominant programming language for experimental AI systems Lisp strengths: Interactive Supports symbolic computation Programs and data share a common representation Automatic management of memory Simple syntax Multiparadigm (functional, imperative, object-oriented) Supported by a long history and wide literature Also used as an internal scripting language for Gnu Emacs, Autocad, and other packages. CSE 415 -- (c) S. Tanimoto, 2002 Introducing Lisp

CSE 415 -- (c) S. Tanimoto, 2002 Introducing Lisp LISP = LISt Processing Intended for processing symbolic information Implementations from noncommercial sites: GNU Common Lisp (GCL) - U of Texas mods to Kyoto Common Lisp CLISP -- developed in Germany. Available implementations from www.franz.com: Allegro Common Lisp for Windows, Web edition. Allegro Common Lisp for Linux CSE 415 -- (c) S. Tanimoto, 2002 Introducing Lisp

CSE 415 -- (c) S. Tanimoto, 2002 Introducing Lisp LISP: Our Objectives Motivation and History Interactive programming Functional programming List manipulation with recursive functions Language extensibility via macro definitions Language evolution to support multiple paradigms Lisp look and feel Lisp for rapidly prototyping AI systems Lisp on the Web CSE 415 -- (c) S. Tanimoto, 2002 Introducing Lisp

History of Lisp (continued) John McCarthy, developed the ideas during the Dartmouth Summer Research Project on Artificial Intelligence, 1956. First implementation on the IBM 704 John McCarthy published “Recursive functions of symbolic expressions and their computation by machine” in Communications of the Association for Computing Machinery in 1960. CSE 415 -- (c) S. Tanimoto, 2002 Introducing Lisp

History of Lisp (continued) 1970s: advanced dialects -- MacLisp, InterLisp; Lisp machines (Symbolics, Inc.; Lisp Machines, Inc.; Xerox; Texas Instruments) Late 1970s: Scheme, Portable Standard Lisp, XLISP. 1984. Common Lisp. Use of Lisp as internal scripting languages: Gnu Emacs, AutoCAD. 1987 CLOS = Common Lisp Object System. 1994 ANSI Standard Lisp. CSE 415 -- (c) S. Tanimoto, 2002 Introducing Lisp

CSE 415 -- (c) S. Tanimoto, 2002 Introducing Lisp Interacting with Lisp Interaction takes place in a Lisp Listener Window. Lisp runs an endless loop for interacting with the user: READ EVAL PRINT CSE 415 -- (c) S. Tanimoto, 2002 Introducing Lisp

Interacting with Lisp (continued) > (+ 3 5) 8 > (* 2.5 (+ 2 2)) 10.0 > (setq x 5) 5 > (sqrt x) 2.236068 > (* x x) 25 CSE 415 -- (c) S. Tanimoto, 2002 Introducing Lisp

CSE 415 -- (c) S. Tanimoto, 2002 Introducing Lisp Defining a function > (* 5 5 5) 125 > (defun cube (n) (* n n n)) CUBE > (cube 2) 8 > (cube 15.001) 3375.6753 CSE 415 -- (c) S. Tanimoto, 2002 Introducing Lisp

CSE 415 -- (c) S. Tanimoto, 2002 Introducing Lisp Symbolic Values Symbols are like identifiers, but they are commonly used as values as well as variables. > (setq x ’pizza) PIZZA > x > (setq pizza ’pepperoni) PEPPERONI > pizza > (eval x) CSE 415 -- (c) S. Tanimoto, 2002 Introducing Lisp

More on Evaluation of Symbols > (setq x ’y) Y > (setq y ’z) Z > (setq z ’x) X > x > (eval x) > (eval (eval x)) CSE 415 -- (c) S. Tanimoto, 2002 Introducing Lisp

CSE 415 -- (c) S. Tanimoto, 2002 Introducing Lisp Values of Symbols A symbol without a value in the current context is said to be “unbound”. The value of a symbol can be any Lisp object, including a number, another symbol, a functional object, a list, and array, etc. A symbol can have several local (“lexical”) values and one global value. However, symbols belong to “packages”, and two different packages can have symbols with the same name. CSE 415 -- (c) S. Tanimoto, 2002 Introducing Lisp