Slynga
Du har då aldrig trott på for
ar
Det passar inte för en karl
Om man är över femton vårar
vill man ha cdr
och car
Kan du förstå två loopingindex
De lämnar stacken snabbt igen
Man rår ej för att tårar rinner
När man skriver loopen
Jag vill ha ett eget konstrukt, som jag kan loopa i
Där jag kan glömma om resurs lämnar sig
Jag kan sitta i mitt konstrukt
Och göra vad jag vill
Där stannar jag tills konvergensen nås
Du tror du vet hur allt skall vara
Du vet när allting passar sig
Utom när jag ska förklara
hur jag känner mig
Du bryr dig inte om att terminera
Och det har tagit mig så hårt
Du kan väl inte acceptera
Längre kod än qsort
Jag vill ha ett eget konstrukt, som jag kan loopa i
Där jag kan glömma om resurs lämnar sig
Jag kan sitta i mitt konstrukt
Och göra vad jag vill
Där stannar jag tills konvergensen nås
Notapparat
Det är ganska ofta man finner sig i situationen att loopen man vill skriva har fyra egentliga delar: initiering, loopelement, fortsättningsvillkor och mellanloopelement. Man vill alltså ha enREPEAT UNTIL
eller do while
, men ha avsevärda kodelement som skall köras enbart om loopen inte terminerar, och andra som skall köras om den gör det. Antingen måste man skjuta in ett break i mitten, eller så blir det till att duplicera antingen den ena eller andra halvan utanför loopen (ett initieringssteg som väldigt mycket liknar första iterationen, eller ett extra stycke kod som upprepar någonting en gång till efteråt). Bra placerad vertikal luft gör det lite tydligare, men det enda raka vore att införa:
INIT
...
REPEAT
...
UNTIL villkor
ELSE
BEGIN
...
END;
(Länge leve Pascal-pseudosyntax...)
INIT är förstås bara socker/konvention, möjligen kunde det ses som scope-definierande. Det hela är helt enkelt samma insikt som varför C har sin absurt flexibla for, med en första skillnad i att ha ett någorlunda rent och snyggt sätt att ha flerradiga element i alla delar. Perspektivet kring exakt när vilken del körs är också olika, men man kunde uttrycka samma saker med en sådan utökning, ungefär lika snyggt. Med tanke på hur många buggar som relaterar till off-by-one kan man säkert säga att det här vore revolutionerande och viktigt. Jag bryr mig likafullt inte ett dyft om vilka pseudospråk som redan har det jag efterlyser.
Jag har fördärvat komplexiteten för kombinerad bak-och-fram-algoritm, men när man skall ersätta ett exponentiellt tillvägagångssätt tycks alla dåliga sätt bra. 12 minuter och 30 MB varav 99,96 % (enligt Apple) gick åt till att göra plats för en teoretisk miljon sekventiellt numrerade kycklingar är lite bättre än föregångaren.
Inga kommentarer:
Skicka en kommentar