Grunnleggende Lisp 1 - repeter kjapt forrige notater, eksempel med GCL (+ 2 2 3) objekter i Lisp: s-uttrykk (atomer, lister), array, stream - vi bryr oss stort sett bare om s-uttrykk (se side 37) - lister lagres i binær-tre datastruktur: atom-celler eller cons-celler (tegn opp figur 2.3 med eksempel) - i cons-celler er første del CAR-cellen (første element), andre CDR-cellen (resten). Se eksempler side 38 - quote eller ' hindrer at Lisp evaluerer objektet. VIKTIG! - tilordne variabler (symbolske atomer) verdier: tabell 2.7 - hvilket som helst data kan bli tilordnet en Lisp-variabel (i motsetning til i imperativ programmering) - gå igjennom eksempler side 41 - kommenter med bruk av ; ;; ;;; eller ;;;; (se mot slutten av hefte) - cons, car, cdr, append, tabell 2.8 + eksempler 44-45 - Lisp er robust, nil returneres i stedet for kræsj - les 46-47 på egen hånd - nøkkelord argument begynner med : evalueres til seg selv (brukes til å endre visse egenskaper til en funksjon) - eq, eql, equal - member, remove, eval (dotted list og #') - eksempel 2 lambda notasjon og funksjoner - lambda notasjon: setter først opp argumentene, så funksjonene som skal brukes på argumentene. eks s 54, slik Lisp definerer funksjoner - string, " først og tilslutt, \", \\ - (defun [] ), tabell 2.11 eks: (defun neste-tall (x) (+ 1 x)) >(defun neste-tall (x) (+ 1 x)) NESTE-TALL >(neste-tall 9) 10 (defun samme-ting (ting1 ting2) (list ting1 'er 'samme 'som ting2)) >(defun samme-ting (ting1 ting2) (list ting1 'er 'samme 'som ting2)) SAMME-TING >(samme-ting 'dill 'dall) (DILL ER SAMME SOM DALL) - documentation, pprint - mulige feil å gjøre: 58-60 - binding av variable, stort sett logisk - let kan brukes for å bruke samme navn på noen lokale variable som allerede eksisterer på globale variable (tabell 2.12) - se eks nederst s 63 sekvens kontroll (if, case) - cond mest brukt: (cond ( ... ) . . . ( ... )) første ikke-nil predikat slår til og alle funksjoner der evalueres, siste verdi returneres av cond. vanlig at siste form er (t ) eks: (defun opphoyd (m n) (cond ((equal n 0) 1) ((equal n 1) m) ((equal n 2) (* m m)) (t "exp er ikke 0,1 eller 2"))) evn ) ) (List processing...) - les strings selv 3 EVALUER Gå igjennom oppgaver og ta evn flere eksempler, oppsummer