Tommy Hallgren <[EMAIL PROTECTED]> writes:

>Har alltid trott att ett statisk typat språk kan klara sig utan
>taggade värden, men blev förvånad när jag läste om ghc och att de har
>tags på alla objekt.

>För skräpsamlaren antar jag, men ändå, är det inte åtminstone
>teoretiskt möjligt att vara utan tags i en Haskell-miljö?

Det har skrivits tagglösa implementationer av statiskt typade språk
(bl.a. olika ML-varianter), och visst har det fördelar. Anledningen
till att O'Caml använder taggar är tvåfald: dels underlättar det för
vissa inbyggda ad hoc-polymorfiska operationer (jämförelser), och dels
gör det skräpsamlaren mätbart snabbare.

Det är en avvägning, men eftersom allokeringar (och därmed
skräpsamlingar) är så vanliga i ML ansågs det vara värt den extra
kostnad som taggning medför. Det skall observeras att O'Camls
kompilator kan optimera bort många taggningsoperationer inuti en
funktion så denna kostnad är inte så stor i praktiken. Det finns
dessutom tagglösa flyttalsarrayer.

Däremot saknar jag ibland möjligheten till oboxade fullordsvärden (32
eller 64 bitar). Den traditionella Lisplösningen är att automatiskt gå
över till bignums när det behövs, men det gör det lite svårare att
optimera heltalshanteringen när man inte statiskt vet om bignum-operationer
krävs.

Ett annat alternativ till taggning är att använda en konservativ
skräpsamlare, men senast jag undersökte så var det inte förenligt med
riktigt höga krav på allokeringsprestanda.



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

Till