***2
¨Lisp,1960
¨نگاهی به تاریخچه ی Lisp:
¡ایده کلی:
úبرخی از ایده های قدیمی ، قدیمی به نظر می رسند.
úبرخی از ایده های قدیمی ، جدید به نظر می رسند.
¡مثالی از یک زبان خوش ساخت و کار راه انداز
¡متفاوت از C ، C++ و JAVA : شانسی برای متفاوت فکر کردن
¡موضوعات کلی در رابطه با طراحی زبان را شرح می دهد.
***3
¨John McCarthy
¨پیشگام در AI
¡فرموله کردن استدلال ها
¨همچنین
¡پیشنهاد اشتراک زمانی
¡تئوری های ریاضی
¨Lisp
از علاقه به محاسبات سمبلیک سرچشمه گرفت
(ریاضی ، منطق)
***4
¨خلاصه ای از Lisp
¨دارای لهجه های متفاوتی است:
¡Lisp 1.5, Maclisp, …, Scheme, ...
¡CommonLisp دارای ویژگیهای اضافی است
¡در این درس مختصری از Lisp 1.5 توضیح داده خواهد شد.
¨دارای نحو ساده ای است
(+ 1 2 3)
(+ (* 2 3) (* 4 5))
(f x y)
***5
¨Atom ها و Pair ها
¨Atom ها شامل اعداد و رشته های غیر قابل تقسیم است.
::= |
::= | |
::= |
¨جفتهای دارای نقطه (dotted pairs)
¡برای pair از (A . B) استفاده می شود.
¡به عبارتهای سمبلیک، S-expressions می گویند:
::= | ( . )
***6
¨توابع پایه
¨توابعی که روی اتمها و pair ها عمل می کنند:
cons car cdr eq atom
¨اعلانها و کنترل:
cond lambda define eval quote یا ‘
¨مثال:
(lambda (x) (cond ((atom x) x) (T (cons ‘A x))))
function f(x) = if atom(x) then x else cons(“A”,x)
¨توابعی با اثرات جانبی (Side Effect)
rplaca rplacd