31 mar 2009 kl. 17.38 skrev Andreas Davour:

> On Tue, 31 Mar 2009, Ingvar wrote:
>
>> Jag skriver:
>>>                      Att författaren därtill inte verkar ha
>>> förstått till fullo vad DEFVAR faktiskt gör är skrämmande.
>>
>> Lite fånigt exempel i det lilla, men tänk dig en medelstor till
>> brutal-stor kodbas (10-200 kodfiler, 50 KB-någon GB kod):
>>
>>  ;;(defvar incr 0)
>>
>>  (defun make-incrementer (base &optional (incr 1))
>>    (lambda () (incf base incr)))
>>
>>  (format t "Test result: ~a~%"
>>          (let ((fun (make-incrementer 1)))
>>            (loop for i from 1 to 10
>>                  collect (funcall fun))))
>>
>> Tryck i en fil och kör. Tag sedan bort kommentaren innan defvar och
>> kör. Att glatt säga "det finns en kodkonvention, men jag tycker den  
>> är
>> ful, så jag ignorerar den" i ett introduktionsmaterial, där  
>> resultatet
>> av att INTE anamma konventionen är ypperst svårfunna buggar är, i min
>> mening, inte försvarbart.
>
> Oavsett Xach så verkar ju boken onekligen ha brister!

Man behöver kanske inte vara så förmäten. Jag har i mitt arbete  
förmånen(?) att ofta använda en annnan Lispdialekt, där en konvention  
för dynamiska variabler inte existerar, och där asterisk inte utan  
vidare kan användas i symbolnamn. Jag kan försäkra att det går att  
hålla ordning på sina program ändå. Naturligtvis vill man alltid veta  
om en variabel i ett visst sammanhang avser en dynamisk eller lexikal  
sådan, men det går att göra på många olika sätt. Man kan ha andra  
sorters konventioner till exempel. Nu använder jag för egen del alltid  
asterisk-konventionen när jag programmerar Common Lisp, eftersom den  
är etablerade för den dialekten, men jag skulle inte förkasta en hel  
bok för att författaren möjligen har egna konventioner i detta  
avseende. Ingvars exempel ovan är tämligen krystat, och avsett att  
vara det. Men innan vi har läst boken vet vi faktiskt inte om det är  
ett exempel som alls motsvarar vad författaren ägnar sig åt.


Björn Lindberg


_______________________________________________
Lisp mailing list
Lisp@lisp.se
http://mailman.nocrew.org/cgi-bin/mailman/listinfo/lisp

Till