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.