LINKÖPINGS UNIVERSITET
Institutionen för datavetenskap              2003-05-06
Anders Haraldsson

Rättelser till läroboken Haraldsson, Programmering i Lisp, tredje tryckningen 1999

sida  rad
 19   -4   Saknas avslutande parentes, skall vara (float (/50 9))
 20   -3   I fotnoten. Skall stå funktionell programmering.
 29   +10  I rutan för case-satsen. Sista raden har en högerparentes för 
           mycket.
           Skall vara "(otherwise uttryck))"
 44   -5   Funktionen sqrt-newton returnerar ett bråk och därför 
           konverteras bråket till ett flyttal med float för att få
           ett värde som man kan förstå. Eftersom all aritmetik 
           ändå görs exakt som stora tal och bråk blir det ineffektivt. 
           Bättre är att flytta konverteringen till funktionen average 
           där divisionen utförs. På sida 45 +6 ersätt "(/ (+ x y) 2))" 
           med "(float (/ (+ x y) 2)))" eller "(/ (+ x y) 2.0)".
 57   +2   Avslutas med en parentes för mycket. Skall vara ...(list 1 2))
 89   +16  (1+ (elements-res (first l)) res)))) ) skall ersättas med
           (elements-res (first l) res))) )))
120   -7   Står "... den skapa funktionen" skall vara "... den skapade 
           funktionen"
141   -9 (figuren) Det står UT skall var OUT
254   +8   Exemplet skall vara 
           (read-from-string " (a b c) kalle 25 " nil 'end-of-string :start 8)
	   Man måste ange parametrarna för hantering av fel om man kommer till
	   slutet av strängen innan man anger nyckelordsparametern :start
	   som anger var i strängen man skall läsa.
308   +4 (figuren) Det står att p pekar på en lista som börjar med 
           elementen b och c. Skall vara elementen a och b.
329   15   I rutan för unwind-protect, 5 raden skall vara
           "uttryck har beräknats eller ett onormalt återhopp görs vid ..."
340   14   skall jämföra stora A och lilla a, dvs det skall 
           vara (char #\A #\a)
343   -6   Första och andra argumentet i substitute skall byta plats. Skall stå
           (substitute nytt-element element sekv)
353   -4   står (funcall mitt-konto 'ta-ut 300) skall vara 
           (funcall mitt-konto 'ut 300)
354   +1   står (funcall mitt-konto 'räkna-ränta) skall 
           vara (funcall mitt-konto 'ränta)
389   +7   står (* -10 (+ 20 30) 40) skall vara 
           (* -20 (+ 20 30) 40) 
412   +10  står (sum-loop 1 sum)))) skall vara (* h (sum-loop 1 sum)))))
420   -1   Deriveringsregeln för sin är felaktig. sin'(f(x)) = f'(x)cos(f(x))
           (skapa-produkt (derivera (argument-1 uttr) var) 
                          (skapa-cos (argument-1 uttr)))
448   -8   svaret skall vara (x (b y z) (z)), dvs sista elementet skall 
           omslutas av ett parentespar
För rättelser tack till bl a Anders Abel, Tord Svensson, 
Anders Lindahl, Tobias Chyssler, Ulrik Lindblad, Andreas Paulsson, Mattias Linner och Andreas Palm.